[U2] How to check which sproc is called by user
Hi U2 Guru's Can I tell when a sproc was last executed or who executed it. If so how. Some way to get statistics and access logs. Reason we are asking this is we are having a session hang issue we have tracked it down to a session user but have no clue which sproc did the call to trouble shoot. Thanks in advance ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Mocking UniSession in .NET
Thanks Brian I will try that out. -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Brian Leach Sent: Tuesday, August 14, 2012 3:32 PM To: U2 Users List Subject: Re: [U2] Mocking UniSession in .NET ... in fact if you're building, you may be better off just using a stringbuilder and generating the delimited string. If the UniDynArray is wrapping a string that might explain why it seems slow. (.net strings are immutable so changing strings is a bad idea). on the server the string manipulations are highly optimised using various hidden pointers and hints. Brian Sent from my iPad On 14 Aug 2012, at 21:25, Brian Leach wrote: > Do you need to send an actual UniDynArray or the underlying data in a dynamic array format? IIIRC the UniSubroutine arguments are overloaded to use strings: and a dynamic array (encapsulated in a UniDynArray) is actually a delimited string. Fields separated by \xFe, values by \xFD, text encoding is 8 bit ansi so get the TextEncoding from page 1252. > > Now I dont know what the UniDynArray does internally to manage data > but I have found it slow, and often better to go to the underlying > string and parse or manipulate it directly e.g. using a > List.AddRange( myArray.StringValue.Split('\xFd')); > > AFAIK the only reason the UniDynArray is constructed from the UniSession is because it needs to get any NLS mappings from the server (anyone know better?) and certainly the older COM implementation of UniObjects did not need a session to create a dynamic array, so you could probably just simulate that and ignore the parenting UniSession. > > > oh and be careful about insert, you probably need replace in most cases. that will replace the content of an existing or non-existing element. > > B > Sent from my iPad > > On 14 Aug 2012, at 20:49, "Ravindranath Wickramanayake" wrote: > >> Hmm my Business logic sends data to Data Layer then data layer talks >> to pick server by using UniObject.NET dll. What I'm trying to unit >> test is this DataLayer Calls to pick to check whether it converts >> complex objects to UniDynArrays correctly. >> >> So How do you abstract UniSession out? Sproc coming from pick side >> (which I have no control over) require me to send UniDynArray. >> >> What I want is to send user data to a UniDynArray. I have already >> interfaced UniDynArray insert methods but I can't see how I could >> return a UniDynArray without a UniSession. Is there a way you could >> fake UniSession for unit testing purposes? >> >> -Original Message- >> From: u2-users-boun...@listserver.u2ug.org >> [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Brian >> Leach >> Sent: Tuesday, August 14, 2012 4:56 AM >> To: 'U2 Users List' >> Subject: Re: [U2] Mocking UniSession in .NET >> >> T >> >> I think we're actually talking the same thing: a separation between >> the business logic and the client. >> Mocking the business logic calls so they don't touch the server, and >> separately unit testing the server routines so you know they will >> work when they will be hit. >> >> And I'm a believer in unit tests, or at least the discipline they >> enforce - learned the hard way - and as a platform for integration >> testing. Without automated testing I haven't got the resources to do >> a full integration test for every release. Though not necessarily >> going as far as TDD yet. >> >> Brian >> >> -Original Message- >> From: u2-users-boun...@listserver.u2ug.org >> [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Tony >> Gravagno >> Sent: 14 August 2012 01:29 >> To: u2-users@listserver.u2ug.org >> Subject: Re: [U2] Mocking UniSession in .NET >> >>> Brian Leach >>> would it be better to construct a higher level wrapper for your >> business >>> functions and mock those? the UO libraries are quite low level: its >> a bit >>> like mocking ado.net rather than your db calls. >> >>> From: Ravindranath >>> Thanks for the reply. I am trying to do higher level wrappers to >> hide >>> those UniObject stuff but the problem is in order to to get >> UniDynArray it >>> has to have UniSession. [snip] >> >> >> Brian, I was going to suggest the same thing. But this is one of the >> differences between unit testing an application and mocking, which >> will allow a unit test to run completely in test mode without >> actually calling to the server within
Re: [U2] Mocking UniSession in .NET
Hmm my Business logic sends data to Data Layer then data layer talks to pick server by using UniObject.NET dll. What I'm trying to unit test is this DataLayer Calls to pick to check whether it converts complex objects to UniDynArrays correctly. So How do you abstract UniSession out? Sproc coming from pick side (which I have no control over) require me to send UniDynArray. What I want is to send user data to a UniDynArray. I have already interfaced UniDynArray insert methods but I can't see how I could return a UniDynArray without a UniSession. Is there a way you could fake UniSession for unit testing purposes? -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Brian Leach Sent: Tuesday, August 14, 2012 4:56 AM To: 'U2 Users List' Subject: Re: [U2] Mocking UniSession in .NET T I think we're actually talking the same thing: a separation between the business logic and the client. Mocking the business logic calls so they don't touch the server, and separately unit testing the server routines so you know they will work when they will be hit. And I'm a believer in unit tests, or at least the discipline they enforce - learned the hard way - and as a platform for integration testing. Without automated testing I haven't got the resources to do a full integration test for every release. Though not necessarily going as far as TDD yet. Brian -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Tony Gravagno Sent: 14 August 2012 01:29 To: u2-users@listserver.u2ug.org Subject: Re: [U2] Mocking UniSession in .NET > Brian Leach > would it be better to construct a higher level wrapper for your business > functions and mock those? the UO libraries are quite low level: its a bit > like mocking ado.net rather than your db calls. > From: Ravindranath > Thanks for the reply. I am trying to do higher level wrappers to hide > those UniObject stuff but the problem is in order to to get UniDynArray it > has to have UniSession. [snip] Brian, I was going to suggest the same thing. But this is one of the differences between unit testing an application and mocking, which will allow a unit test to run completely in test mode without actually calling to the server within the application code. Ravi could abstract his code out for the test but that very process could be considered an invalidation of the test. Despite the latest craze around unit testing and the entire industry that it's spawned, I still find applications I use to be as crappy as they've always been, so I'm not as enamored with unit tests or mocking as many others. When working on a GUI project I try to get the BASIC app developers to handle everything there while I intentionally remain ignorant of their inner processes. Once my clients get the hang of this they really enjoy the process - the BASIC developers regain their sense of self-confidence as they realize that a GUI doesn't threaten their jobs. We interface through well-defined BASIC calls. It's here that we can do a BASIC mockup of the input to their BASIC code. If that works, and I've done my job, the GUI will work when linked to the back-end. Similarly, and (Zzz...) here's the point, my GUI-side tests don't connect into the DBMS, so I don't need to mock that part. I keep that interface lightweight, use the same component for almost all DBMS activity, and don't need the overhead of unit tests or mocking for every new application. Ravi, that might be of some help to you. Good luck, T ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
Re: [U2] Mocking UniSession in .NET
Thanks for the reply. I am trying to do higher level wrappers to hide those UniObject stuff but the problem is in order to to get UniDynArray it has to have UniSession. UniObjects allow me to send UniDynArray to subroutine. Would you happen to have a sample code where you do something like that. My code is as follow my prob is UniDynArray GetData { get; } line. Code as bellow #region GetDataByField string GetDataByField(int field); string GetDataByField(int field, int value); string GetDataByField(int field, int value, int subValue); #endregion #region Count int Count(int field); int Count(int field, int value); int Count(int field, int value, int subValue); #endregion #region Insert void Insert(int field, string strValue); void Insert(int field, int value, string strValue); void Insert(int field, int value, int subValue, string strValue); #endregion #region GetData UniDynArray GetData { get; } #endregion -Original Message- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Brian Leach Sent: Monday, August 13, 2012 3:50 PM To: U2 Users List Subject: Re: [U2] Mocking UniSession in .NET would it be better to construct a higher level wrapper for your business functions and mock those? the UO libraries are quite low level: its a bit like mocking ado.net rather than your db calls. I expose all the business logic through server side subroutines, all using standardized calling conventions, then they can easily be simulated and also I can use server side unit tests. Sent from my iPad On 13 Aug 2012, at 19:32, "Ravindranath Wickramanayake" wrote: > Hi > > > > Does anybody know how to mock UniSession via .NET? or is there a > interface for UniSession like IUniSession so it could be easily > mockable? > > > > Your Help is very much appreciated > > > > Thanks > > Ravi > > ___ > U2-Users mailing list > U2-Users@listserver.u2ug.org > http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users
[U2] Mocking UniSession in .NET
Hi Does anybody know how to mock UniSession via .NET? or is there a interface for UniSession like IUniSession so it could be easily mockable? Your Help is very much appreciated Thanks Ravi ___ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users