objectbridge-developers Mailing List for ObJectRelationalBridge (Page 2)
Brought to you by:
thma
You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(14) |
Dec
(20) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(33) |
Feb
(8) |
Mar
(3) |
Apr
(1) |
May
(18) |
Jun
(6) |
Jul
(15) |
Aug
(71) |
Sep
(29) |
Oct
(43) |
Nov
(77) |
Dec
(54) |
2002 |
Jan
(54) |
Feb
(147) |
Mar
(144) |
Apr
(163) |
May
(307) |
Jun
(240) |
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
From: Thomas M. <tho...@ho...> - 2002-06-16 07:56:02
|
-------- Original Message -------- Subject: Re: DescriptorRepository and ReverseDb Date: Sat, 15 Jun 2002 23:14:05 +0200 From: Thomas Mahler <tho...@ho...> To: Florian Bruckner <bf...@fl...> CC: obj...@li... References: <LLB...@fl...> Hi Florian, Florian Bruckner wrote: > Hi! > > Having found some spare time again I'm looking into integrating > DescriptorRepository and friends into ReverseDb. Unfortunately I'm having > some problems with the design. > > My first problem is that DescriptorRepository requires the classes already > to be there in bytecode. While this is perfectly ok with the normal use of > DescriptorRepository this is a major problem for ReverseDb, simply because > at that stage you usually do not have the classes. Right. I anticipated your problems already when I had a short look at your reversedb code some time ago. > To be able to use > DescriptorRepository with ReverseDb there must be a possibility to load a > repository and create ClassDescriptor objects without the necessary classes. I agree. We really need this feature! > I have not looked at the implementation of these classes yet, but I frear > that this might require a major redesign of these classes. Some work is needed, but I don't think it's going to be a major redesign. It's not really required to load the persistent classes etc. immediately. I think it can be delayed until clients try to access them. > On the other hand > it would be nice if we could use the DescriptorRepository framework in > ReverseDb (at least in a useful way). > I agree. I want to have *all* mapping metadata in the DescriptorRepository and nowhere else. > The second problem is the singleton design of DescriptorRepository. We have to get rid of this too! > While it > is possible to create new instances of the class, some other classes in that > framework rely on the fact that it is a singleton (e.g. ClassDescriptor > accesses DescriptorRepository by its getInstace() method). In a GUI > application (at least in a GUI application I'd like to use) you should be > able to open multiple windows with OJB repositories, maybe because you want > to compare the content or maybe you want to copy class descriptors or other > elements from one repository to the other. > I agree. There are other places (e.g. PersistenceBrokerFactory) that are already prepared to work with multiple repository instances. > While the second problem could be worked around by simply allowing only one > instance of a repository-editor-window to be opened, the first issue would > make it necessary to create a "functional copy" of DescriptorRepository, > which I'd like to avoid if possible. > > Any ideas or comments how we could proceed here or do you think these > requirements are so out of scope for OJB that it is not feasable to > implement them? > We should work on the necessary refactorings as mentioned above! We want to have several metadata tools that can't live with the current restrictions! > best regards, > Florian > > PS: I'd like to check-in a completely redesigned prototype of reversedb when > the repository has been migrated to jakarta if nobody objects. I think the > design is more flexible now and could serve as the basis for a complete > reverse-engineering, repository-editing tool. > no objections. Just go ahead! cheers, Thomas |
From: Thomas M. <tho...@ho...> - 2002-06-16 07:06:13
|
Hallo Bastian, Bastian Schmitz wrote: > hi you OJB developers, i've bee working with OJB for a couple of > months now and in my opinion you are performing great work. > thanks, > in my application's datamodel there are many objects (A) that reside > in a default, dummy or empty state at runtime and i would like them > not being persisted, when all the other objects (B) around them are > stored in the database and all references / fks to them stored as SQL > NULL values. reference-descriptors and collection-descriptors pointing from B to A must be set to auto-update="false" to avoid cascading storing of A objects! This can be done quite easily with existing OJB API at runtime. (start with broker.getClassDescriptorFor(B.class)) > on the other hand, on matialization of objects B > containing NULL references / fks to A's, these references should be > filled with dummy A's. OJB provide InstanceCallbacks. Let your class B implement the interface ojb.broker.PersistenceBrokerAware you can put your initialization code in the method afterLookup(). > the A objects have a method that "decides" > whether these objects should be persisted or not. this "mechanism" > should also work with collection descriptors. > can be done as described above. cheers, Thomas > now, my question is how this behaviour could be realized with OJB and > where are the "right" starting points for this. > > thanks in advance bastian schmitz > > > > _______________________________________________________________ > > Don't miss the 2002 Sprint PCS Application Developer's Conference > August 25-28 in Las Vegas - > http://devcon.sprintpcs.com/adp/index.cfm?source=dntextlink > > _______________________________________________ > Objectbridge-developers mailing list > Obj...@li... > https://lists.sourceforge.net/lists/listinfo/objectbridge-developers > > > |
From: Thomas M. <tho...@ho...> - 2002-06-16 07:06:10
|
Hi, tr...@th... wrote: > The model in that chapter looks good, but doesn't include many things. That's way I said "starting point" ! Of course we need a more complex model to demonstrate/test all OJB features. > I'm just thinking it would be nice if maybe this Store test application > could be potentially used as a real application and if so, we may want > to expand the model to include more things such as mutliple prices, > variations on a product, sizes, inventory, etc. This would also make > for more test cases than you can shake a stick at. > I think it's good to have a complex and realistic object model! So this could be a good idea. I know there is a standardized data model for retail applications (I forget the name, but can ask a colleague on monday). This model contains more than 250 tables and should be complex enough. Maybe this (or a subset) could be another candidate. But we must be careful not to loose the scope. Once people ask us "I want to use your shop application, but it is not able to handle X", we know we did something wrong ;-) cheers, Thomas > Depends if this should be usable later or if it's just for testing. > I've been involved in a product system for Fila USA and built a store > component on top of it and these are just some of the things we had to > implement. Just my 2 cents. > > Travis > > ---- Original Message ---- > From: Mahler Thomas <tho...@it... > <mailto:tho...@it...>> > Sent: 2002-06-14 > To: 'Matthew Baird' <ma...@so... > <mailto:ma...@so...>>, > "Objectbridge (E-Mail)" <obj...@li... > <mailto:obj...@li...>>, > 'Jakob Braeuchi' <jbr...@ho... <mailto:jbr...@ho...>> > Subject: AW: [OJB-developers] quality improvements > > I like this idea as it will allow to build nice regression tests AND to > give a lot of sample code to help users building applications! > > attached you'll find a chapter from a (work-in-progress, reviews are > available at the serverside.com ) O'Reilly book that provides a nice > webshop doamin model. It also shows how to implement this with OJB. > Maybe this could serve as a starting point for "OJB Petstore" > > cheers, > > Thomas > > -----Ursprüngliche Nachricht----- > *Von:* Matthew Baird [mailto:ma...@so...] > *Gesendet:* Freitag, 14. Juni 2002 09:30 > *An:* Objectbridge (E-Mail) > *Betreff:* RE: [OJB-developers] quality improvements > > I agree. I think we need some sort of domain to model that lends > itself to testing all the complexities. > > It would be great to come up with a class diagram that showed all > the moving parts that we could agree on first, then start to build a > new scenario to base all test cases on. > > > > I think the general direction has been somewhat of a store (?). > Maybe we build an ecommerce type of application (with no UI) where > we have the users who have carts that contain items. We could also > model an administrative function where admins have roles to manage > different stores. The complexity of an ecommerce model is pretty > much unbounded, so I don't think we'll ever run out of ways to make > new test cases. Later if someone wants to use struts to show how to > use OJB in a servlet engine, or in a ejb environment we could extend > it that way. > > > > Either that or we could build the "OJB Petstore" which would be > similar to the above. > > > > Any other recommendations? > > > > m > > > > -----Original Message----- > *From:* Jakob Braeuchi [mailto:jbr...@ho...] > *Sent:* Friday, June 14, 2002 12:16 AM > *To:* Matthew Baird; Mahler Thomas; Objectbridge (E-Mail) > *Subject:* Re: [OJB-developers] quality improvements > > > > hi matthew, > > > > imho we need to extend our object model to match the different > scenarios. > > the current model with a class and a table for each testcase is > getting too cluttered. > > i don't like changing metadata at runtime for testcases. > > > > jakob > > ----- Original Message ----- > > *From:* Matthew Baird <mailto:ma...@so...> > > *To:* 'Jakob Braeuchi' <mailto:jbr...@ho...> ; Mahler > Thomas <mailto:tho...@it...> ; Objectbridge > (E-Mail) <mailto:obj...@li...> > > *Cc:* Matthew Baird (E-Mail) <mailto:Mat...@mo...> > > *Sent:* Friday, June 14, 2002 9:00 AM > > *Subject:* RE: [OJB-developers] quality improvements > > > > I would agree if we had a model for every permutation sometimes > to simulate a complex scenario we need new tables that might not > fit into the person/project/etc. Plus there is the different > mappings. I guess we could change the mapping metadata at > runtime, but the test becomes more complex.... > > > > Tough call. > > > > -----Original Message----- > *From:* Jakob Braeuchi [mailto:jbr...@ho...] > *Sent:* Thursday, June 13, 2002 11:29 PM > *To:* Mahler Thomas; Objectbridge (E-Mail) > *Cc:* Matthew Baird (E-Mail) > *Subject:* Re: [OJB-developers] quality improvements > > > > hi, > > > > we already have a lot of test cases (not enough, i know) and we > also have a lot test classes and test tables. > > for 1:n we have productGroup - articles, for m:n there are > persons - projects and the graphEdge - graphNode > > and many more all with their own tables. > > > > so i propose to have a common object-model for our test cases. > > this model should contain real-world classes, like persons, > projects etc. that are known by everybody (not A,B etc.). > > these classes could also be useful for examples and tutorials. > > > > what do you think ? > > > > jakob > > ----- Original Message ----- > > *From:* Mahler Thomas <mailto:tho...@it...> > > *To:* Objectbridge (E-Mail) > <mailto:obj...@li...> > > *Cc:* Matthew Baird (E-Mail) <mailto:Mat...@mo...> > > *Sent:* Thursday, June 13, 2002 9:21 AM > > *Subject:* [OJB-developers] quality improvements > > > > Hi all, > > > > OJB is making a lot of progress in the last months. We have > tons of new features and a lot of very good refactorings of > the internal mechanisms. > > So far so good! > > > > We did not succeed to improve our regression testsuite > accordingly. Of course there a lot of new TestCases. But > there are still many things not covered thoroughly. > > > > Matthew prepared a list of missing testcases, enumerating > some of the most urgent tests: > > > > > > 1. One-To-One test (for both ODMG and PB) > > Create/Read/Update/Delete > > Create/Read/Update/Delete with Proxies > > Create/Read/Update/Delete with class that belongs > to set of classes mapped to same table. > > 2. One-To-Many test (for both ODMG and PB) > > Create/Read/Update/Delete > > Create/Read/Update/Delete with Proxies > > Create/Read/Update/Delete with class that belongs > to set of classes mapped to same table. > > 3. Many-To-Many test (for both ODMG and PB) (both types of > composition) > > Create/Read/Update/Delete > > Create/Read/Update/Delete with Proxies > > Create/Read/Update/Delete with class that belongs > to set of classes mapped to same table. > > 4. ODMGCollections test > > Create/Read/Update/Delete > > Create/Read/Update/Delete with proxies > > PerformanceTest > > Empty Collections Test > > Create/Read/Update/Delete with class that belongs to > set of classes mapped to same table. > > > > 5. Conversions Tests > > 6. LockMap performance tests > > 7. OQL ORDER BY tests > > 8. Concurrent Update Test > > 9. Deadlock test > > 10. Key generation tests > > 11. Duplicate key insertion test > > 12. multi-pk's test > > 13. callbacks test > > 14. Race Condition tests > > 15. Lock Modes test > > 16. CLOB/BLOB/LOB tests. > > 17. Delete by Query Tests > > 18. Query By Example tests with multiple classes mapped to > same table) > > > > Each of us could easily add at least 5 additional urgent > testcases to this list! > > > > So I'm requesting all to join the OJB quality improvement > initiative and contribute TestCases. > > Feel free to implement some of those 18 tests mentioned > above or to contribute your own TestCases. > > > > As I mentioned in my > http://objectbridge.sourceforge.net/team.html document it's > best practice to add new TestCases with all new features or > refactorings! > > > > Thanks for helping to improve code quality, > > > > cheers, > > > > Thomas > > _______________________________________________________________ Don't > miss the 2002 Sprint PCS Application Developer's Conference August 25-28 > in Las Vegas - > http://devcon.sprintpcs.com/adp/index.cfm?source=dntextlink > _______________________________________________ Objectbridge-developers > mailing list Obj...@li... > https://lists.sourceforge.net/lists/listinfo/objectbridge-developers |
From: Thomas M. <tho...@ho...> - 2002-06-16 07:06:08
|
Hi, Chris Greenlee wrote: > +1. I like the idea of using the WebShop classes as a basis. > > When/while we do this, would it be a good idea to start moving tests from > the test.ojb package into the ojb package? That way we can include tests of > protected methods where useful. > Good idea. There is only one caveat: currently all compiled classes are written to target/classes. Once we put test classes into the same packages as the production classes we have compile them into different subdirectories say: target/classes/production target/classes/test so we can avoid to include test classes into the binary distribution ojb-xxx.jar Thomas > Cheers, > > Chris Greenlee > > > > _______________________________________________________________ > > Don't miss the 2002 Sprint PCS Application Developer's Conference > August 25-28 in Las Vegas - http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink > > _______________________________________________ > Objectbridge-developers mailing list > Obj...@li... > https://lists.sourceforge.net/lists/listinfo/objectbridge-developers > > > |
From: Thomas M. <tho...@ho...> - 2002-06-16 07:06:05
|
Hi, Matthew Baird wrote: > +1 > > > > So if this is the way we go, do we just start adding to the bottom of > the repository until we get the whole thing up and running, then move > the tests over? What's the plan? > we can also start with a new repository_junit2.xml to avoid mixing and to ease dropping the old stuff once we are finished with the new testsuite. thomas > > > m > > > > -----Original Message----- > *From:* Mahler Thomas [mailto:tho...@it...] > *Sent:* Friday, June 14, 2002 1:21 AM > *To:* 'Matthew Baird'; Objectbridge (E-Mail); 'Jakob Braeuchi' > *Subject:* AW: [OJB-developers] quality improvements > > > > I like this idea as it will allow to build nice regression tests AND to > give a lot of sample code to help users building applications! > > > > attached you'll find a chapter from a (work-in-progress, reviews are > available at the serverside.com ) O'Reilly book that provides a nice > webshop doamin model. It also shows how to implement this with OJB. > Maybe this could serve as a starting point for "OJB Petstore" > > > > cheers, > > > > Thomas > |
From: Matthew B. <ma...@so...> - 2002-06-15 22:30:35
|
I'm sending this specifically to you two guys because you are the most active developers for the core of OJB. We have big problems with objects being updated and cache consistency. If you load an object in one VM, serialize it to another VM, then update fields and send it back and call store(x), you will end up with objects referencing that object becoming stale. ie FOO references BAR load BAR (VM1) serialize BAR to VM2 set some attributes serialize BAR back to VM1 for update load FOO, now the FOO refers to the old BAR, not the updated BAR. I'm looking at what it will take to fix this now, but I wanted you two big brains to start thinking about it as well. This is a subtle bug (in some cases) that is hard to write test cases for. I'm seeing it because we seem to be the major users of OJB in J2EE where it's location transparency. the JDO API built on top of the PB will never really be right until this works. Luckily this is all encapsulated inside the PB. I'm trying to come up with a more unified view of how getting objects and updating objects from the PB might work. It might be a smart thing to expose "read" and "write" get operations on the PB. I'm not sure right now. thoughts? m |
From: <tr...@th...> - 2002-06-15 17:54:44
|
This just me? Travis |
From: Jason v. Z. <jv...@ze...> - 2002-06-15 17:50:23
|
Hi, Please stop making changes the repository. I'm trying to move it. -- jvz. Jason van Zyl jv...@ap... http://tambora.zenplex.org |
From: Bastian S. <Ch...@gm...> - 2002-06-15 15:29:26
|
hi you OJB developers, i've bee working with OJB for a couple of months now and in my opinion you= are performing great work. in my application's datamodel there are many objects (A) that reside in a= default, dummy or empty state at runtime and i would like them not being= persisted, when all the other objects (B) around them are stored in the= database and all references / fks to them stored as SQL NULL values. on the other hand, on matialization of objects B containing NULL references= / fks to A's, these references should be filled with dummy A's. the A objects have a method that "decides" whether these objects should be= persisted or not. this "mechanism" should also work with collection descriptors. now, my question is how this behaviour could be realized with OJB and where= are the "right" starting points for this. thanks in advance bastian schmitz |
From: Florian B. <bf...@fl...> - 2002-06-15 06:53:27
|
Hi! Having found some spare time again I'm looking into integrating DescriptorRepository and friends into ReverseDb. Unfortunately I'm having some problems with the design. My first problem is that DescriptorRepository requires the classes already to be there in bytecode. While this is perfectly ok with the normal use of DescriptorRepository this is a major problem for ReverseDb, simply because at that stage you usually do not have the classes. To be able to use DescriptorRepository with ReverseDb there must be a possibility to load a repository and create ClassDescriptor objects without the necessary classes. I have not looked at the implementation of these classes yet, but I frear that this might require a major redesign of these classes. On the other hand it would be nice if we could use the DescriptorRepository framework in ReverseDb (at least in a useful way). The second problem is the singleton design of DescriptorRepository. While it is possible to create new instances of the class, some other classes in that framework rely on the fact that it is a singleton (e.g. ClassDescriptor accesses DescriptorRepository by its getInstace() method). In a GUI application (at least in a GUI application I'd like to use) you should be able to open multiple windows with OJB repositories, maybe because you want to compare the content or maybe you want to copy class descriptors or other elements from one repository to the other. While the second problem could be worked around by simply allowing only one instance of a repository-editor-window to be opened, the first issue would make it necessary to create a "functional copy" of DescriptorRepository, which I'd like to avoid if possible. Any ideas or comments how we could proceed here or do you think these requirements are so out of scope for OJB that it is not feasable to implement them? best regards, Florian PS: I'd like to check-in a completely redesigned prototype of reversedb when the repository has been migrated to jakarta if nobody objects. I think the design is more flexible now and could serve as the basis for a complete reverse-engineering, repository-editing tool. |
From: Matthew B. <ma...@so...> - 2002-06-15 04:04:31
|
+1 My experience has been the more complex and real-world the application = is, the less one-on-one support the developers will have to give. Most of = the questions will be answerable with "see demo application ..." =20 We can, however, start with something reasonably simple and build from there. =20 m =20 -----Original Message----- From: tr...@th... [mailto:tr...@th...]=20 Sent: Friday, June 14, 2002 3:47 PM To: obj...@li... Subject: RE: AW: [OJB-developers] quality improvements =20 The model in that chapter looks good, but doesn't include many things. = I'm just thinking it would be nice if maybe this Store test application = could be potentially used as a real application and if so, we may want to expand = the model to include more things such as mutliple prices, variations on a product, sizes, inventory, etc. This would also make for more test = cases than you can shake a stick at.=20 Depends if this should be usable later or if it's just for testing. = I've been involved in a product system for Fila USA and built a store = component on top of it and these are just some of the things we had to implement. Just my 2 cents.=20 Travis=20 ---- Original Message ----=20 From: Mahler Thomas <tho...@it... <mailto:tho...@it...> >=20 Sent: 2002-06-14=20 To: 'Matthew Baird' <ma...@so... <mailto:ma...@so...> >,=20 "Objectbridge (E-Mail)" <obj...@li... <mailto:obj...@li...> >,=20 'Jakob Braeuchi' <jbr...@ho... <mailto:jbr...@ho...> = >=20 Subject: AW: [OJB-developers] quality improvements=20 I like this idea as it will allow to build nice regression tests AND to = give a lot of sample code to help users building applications! =20 attached you'll find a chapter from a (work-in-progress, reviews are available at the serverside.com ) O'Reilly book that provides a nice = webshop doamin model. It also shows how to implement this with OJB. Maybe this = could serve as a starting point for "OJB Petstore" =20 cheers, =20 Thomas -----Urspr=FCngliche Nachricht----- Von: Matthew Baird [mailto:ma...@so...] Gesendet: Freitag, 14. Juni 2002 09:30 An: Objectbridge (E-Mail) Betreff: RE: [OJB-developers] quality improvements I agree. I think we need some sort of domain to model that lends itself = to testing all the complexities.=20 It would be great to come up with a class diagram that showed all the = moving parts that we could agree on first, then start to build a new scenario = to base all test cases on. =20 I think the general direction has been somewhat of a store (?). Maybe = we build an ecommerce type of application (with no UI) where we have the = users who have carts that contain items. We could also model an = administrative function where admins have roles to manage different stores. The = complexity of an ecommerce model is pretty much unbounded, so I don't think we'll = ever run out of ways to make new test cases. Later if someone wants to use = struts to show how to use OJB in a servlet engine, or in a ejb environment we = could extend it that way. =20 Either that or we could build the "OJB Petstore" which would be similar = to the above. =20 Any other recommendations? =20 m _______________________________________________________________ Don't = miss the 2002 Sprint PCS Application Developer's Conference August 25-28 in = Las Vegas - http://devcon.sprintpcs.com/adp/index.cfm?source=3Dosdntextlink _______________________________________________ Objectbridge-developers mailing list Obj...@li... https://lists.sourceforge.net/lists/listinfo/objectbridge-developers |
From: <tr...@th...> - 2002-06-14 22:52:41
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; charset=3Diso-8859-= 1"> <META content=3D"MSHTML 6.00.2600.0" name=3DGENERATOR> <STYLE>@font-face { =09font-family: Tahoma; } @page Section1 {size: 8.5in 11.0in; margin: 1.0in 1.25in 1.0in 1.25in; } P.MsoNormal { =09FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman" } LI.MsoNormal { =09FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman" } DIV.MsoNormal { =09FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman" } A:link { =09COLOR: blue; TEXT-DECORATION: underline } SPAN.MsoHyperlink { =09COLOR: blue; TEXT-DECORATION: underline } A:visited { =09COLOR: blue; TEXT-DECORATION: underline } SPAN.MsoHyperlinkFollowed { =09COLOR: blue; TEXT-DECORATION: underline } SPAN.emailstyle17 { =09COLOR: navy; FONT-FAMILY: Arial } SPAN.EmailStyle18 { =09COLOR: navy; FONT-FAMILY: Arial } DIV.Section1 { =09page: Section1 } </STYLE> </HEAD> <BODY lang=3DEN-US vLink=3Dblue link=3Dblue bgColor=3Dwhite>The model in th= at chapter looks good, but doesn't include many things. I'm just thin= king it would be nice if maybe this Store test application could be potenti= ally used as a real application and if so, we may want to expand the model = to include more things such as mutliple prices, variations on a product, si= zes, inventory, etc. This would also make for more test cases than yo= u can shake a stick at. <br> <br>Depends if this should be usable later or if it's just for testing. &nb= sp;I've been involved in a product system for Fila USA and built a store co= mponent on top of it and these are just some of the things we had to implem= ent. Just my 2 cents. <br> <br>Travis <br> <br>---- Original Message ---- <br>From: Mahler Thomas <<a href=3D"mailto:tho...@it...">t= hom...@it...</a>> <br>Sent: 2002-06-14 <br>To: 'Matthew Baird' <<a href=3D"mailto:ma...@so...">ma= tt...@so...</a>>,=20 <br> "Objectbridge (E-Mail)" <<a href=3D"mailto:objectbridge-d= eve...@li...">obj...@li...urceforge.= net</a>>,=20 <br> 'Jakob Braeuchi' <<a href=3D"mailto:jbr...@ho...">jbraeuch= i...@ho...</a>> <br>Subject: AW: [OJB-developers] quality improvements <br> <br> <DIV><FONT face=3DArial color=3D#0000ff size=3D2><SPAN class=3D875051508-14= 062002>I like=20 this idea as it will allow to build nice regression tests AND to give a lot= of=20 sample code to help users building applications!</SPAN></FONT></DIV> <DIV><FONT face=3DArial color=3D#0000ff size=3D2><SPAN=20 class=3D875051508-14062002></SPAN></FONT> </DIV> <DIV><FONT face=3DArial color=3D#0000ff size=3D2><SPAN=20 class=3D875051508-14062002>attached you'll find a chapter from a=20 (work-in-progress, reviews are available at the serverside.com ) O'Reilly b= ook=20 that provides a nice webshop doamin model. It also shows how to implement t= his=20 with OJB. Maybe this could serve as a starting point for "OJB=20 Petstore"</SPAN></FONT></DIV> <DIV><FONT face=3DArial color=3D#0000ff size=3D2><SPAN=20 class=3D875051508-14062002></SPAN></FONT> </DIV> <DIV><FONT face=3DArial color=3D#0000ff size=3D2><SPAN=20 class=3D875051508-14062002>cheers,</SPAN></FONT></DIV> <DIV><FONT face=3DArial color=3D#0000ff size=3D2><SPAN=20 class=3D875051508-14062002></SPAN></FONT> </DIV> <DIV><FONT face=3DArial color=3D#0000ff size=3D2><SPAN=20 class=3D875051508-14062002>Thomas</SPAN></FONT></DIV> <BLOCKQUOTE dir=3Dltr=20 style=3D"PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px soli= d; MARGIN-RIGHT: 0px"> <DIV class=3DOutlookMessageHeader dir=3Dltr align=3Dleft><FONT face=3DTah= oma=20 size=3D2>-----Urspr=FCngliche Nachricht-----<BR><B>Von:</B> Matthew Baird= =20 [mailto:ma...@so...]<BR><B>Gesendet:</B> Freitag, 14. Juni = 2002=20 09:30<BR><B>An:</B> Objectbridge (E-Mail)<BR><B>Betreff:</B> RE:=20 [OJB-developers] quality improvements<BR><BR></FONT></DIV> <DIV class=3DSection1> <P class=3DMsoNormal><FONT face=3DArial color=3Dnavy size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">I agree. I thi= nk we=20 need some sort of domain to model that lends itself to testing all the=20 complexities. </SPAN></FONT></P> <P class=3DMsoNormal><FONT face=3DArial color=3Dnavy size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">It would be gr= eat to=20 come up with a class diagram that showed all the moving parts that we cou= ld=20 agree on first, then start to build a new scenario to base all test cases= =20 on.</SPAN></FONT></P> <P class=3DMsoNormal><FONT face=3DArial color=3Dnavy size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"></SPAN></FONT>= </P> <P class=3DMsoNormal><FONT face=3DArial color=3Dnavy size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">I think the ge= neral=20 direction has been somewhat of a store (?). Maybe we build an ecommerce t= ype=20 of application (with no UI) where we have the users who have carts that= =20 contain items. We could also model an administrative function where admin= s=20 have roles to manage different stores. The complexity of an ecommerce mod= el is=20 pretty much unbounded, so I don't think we'll ever run out of ways to mak= e new=20 test cases. Later if someone wants to use struts to show how to use OJB i= n a=20 servlet engine, or in a ejb environment we could extend it that=20 way.</SPAN></FONT></P> <P class=3DMsoNormal><FONT face=3DArial color=3Dnavy size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"></SPAN></FONT>= </P> <P class=3DMsoNormal><FONT face=3DArial color=3Dnavy size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Either that or= we=20 could build the "OJB Petstore" which would be similar to the=20 above.</SPAN></FONT></P> <P class=3DMsoNormal><FONT face=3DArial color=3Dnavy size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"></SPAN></FONT>= </P> <P class=3DMsoNormal><FONT face=3DArial color=3Dnavy size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Any other=20 recommendations?</SPAN></FONT></P> <P class=3DMsoNormal><FONT face=3DArial color=3Dnavy size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"></SPAN></FONT>= </P> <P class=3DMsoNormal><FONT face=3DArial color=3Dnavy size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">m</SPAN></FONT= ></P> <P class=3DMsoNormal><FONT face=3DArial color=3Dnavy size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"></SPAN></FONT>= </P> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><FONT face=3DTahoma siz= e=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">-----Original=20 Message-----<BR><B><SPAN style=3D"FONT-WEIGHT: bold">From:</SPAN></B> Jak= ob=20 Braeuchi [mailto:jbr...@ho...] <BR><B><SPAN=20 style=3D"FONT-WEIGHT: bold">Sent:</SPAN></B> Friday, June 14, 2002 12:16= =20 AM<BR><B><SPAN style=3D"FONT-WEIGHT: bold">To:</SPAN></B> Matthew Baird; = Mahler=20 Thomas; Objectbridge (E-Mail)<BR><B><SPAN=20 style=3D"FONT-WEIGHT: bold">Subject:</SPAN></B> Re: [OJB-developers] qual= ity=20 improvements</SPAN></FONT></P> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><FONT face=3D"Times New= Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><FONT face=3DArial size= =3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">hi=20 matthew,</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><FONT face=3D"Times New= Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><FONT face=3DArial size= =3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">imho we need to extend our = object=20 model to match the different scenarios. </SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><FONT face=3DArial size= =3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">the current model with a cl= ass and=20 a table for each testcase is getting too cluttered.</SPAN></FONT></P></DI= V> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><FONT face=3DArial size= =3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">i don't like changing metad= ata at=20 runtime for testcases.</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><FONT face=3D"Times New= Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><FONT face=3DArial size= =3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">jakob</SPAN></FONT></P></DI= V> <BLOCKQUOTE=20 style=3D"BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: mediu= m none; PADDING-LEFT: 4pt; PADDING-BOTTOM: 0in; MARGIN: 5pt 0in 5pt 3.75pt;= BORDER-LEFT: black 1.5pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: medium no= ne"> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><FONT face=3DArial si= ze=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">----- Original Message --= ---=20 </SPAN></FONT></P></DIV> <DIV style=3D"font-color: black"> <P class=3DMsoNormal style=3D"BACKGROUND: #e4e4e4; MARGIN-LEFT: 0.5in">= <B><FONT=20 face=3DArial size=3D2><SPAN=20 style=3D"FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">From:<= /SPAN></FONT></B><FONT=20 face=3DArial size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Aria= l"> <A=20 title=3Dm...@so...=20 href=3D"mailto:ma...@so...">Matthew Baird</A>=20 </SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><B><FONT face=3DArial= =20 size=3D2><SPAN=20 style=3D"FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">To:</S= PAN></FONT></B><FONT=20 face=3DArial size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Aria= l"> <A=20 title=3Dj...@ho... href=3D"mailto:jbr...@ho...">'Ja= kob=20 Braeuchi'</A> ; <A title=3Dt...@it...=20 href=3D"mailto:tho...@it...">Mahler Thomas</A> ; <A=20 title=3Do...@li...=20 href=3D"mailto:obj...@li...">Objectbri= dge=20 (E-Mail)</A> </SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><B><FONT face=3DArial= =20 size=3D2><SPAN=20 style=3D"FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">Cc:</S= PAN></FONT></B><FONT=20 face=3DArial size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Aria= l"> <A=20 title=3DM...@mo...=20 href=3D"mailto:Mat...@mo...">Matthew Baird (E-Mail)</A>=20 </SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><B><FONT face=3DArial= =20 size=3D2><SPAN=20 style=3D"FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">Sent:<= /SPAN></FONT></B><FONT=20 face=3DArial size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Aria= l"> Friday,=20 June 14, 2002 9:00 AM</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><B><FONT face=3DArial= =20 size=3D2><SPAN=20 style=3D"FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">Subjec= t:</SPAN></FONT></B><FONT=20 face=3DArial size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Aria= l"> RE:=20 [OJB-developers] quality improvements</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><FONT face=3D"Times N= ew Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><FONT face=3DArial co= lor=3Dnavy=20 size=3D2><SPAN style=3D"FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Aria= l">I=20 would agree if we had a model for every permutation sometimes to simula= te a=20 complex scenario we need new tables that might not fit into the=20 person/project/etc. Plus there is the different mappings. I guess we co= uld=20 change the mapping metadata at runtime, but the test becomes more=20 complex....</SPAN></FONT></P> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><FONT face=3D"Times N= ew Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><FONT face=3DArial co= lor=3Dnavy=20 size=3D2><SPAN style=3D"FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Aria= l">Tough=20 call.</SPAN></FONT></P> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 0.5in"><FONT face=3D"Times N= ew Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3DTahoma siz= e=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">-----Original=20 Message-----<BR><B><SPAN style=3D"FONT-WEIGHT: bold">From:</SPAN></B> J= akob=20 Braeuchi [mailto:jbr...@ho...] <BR><B><SPAN=20 style=3D"FONT-WEIGHT: bold">Sent:</SPAN></B> Thursday, June 13, 2002 11= :29=20 PM<BR><B><SPAN style=3D"FONT-WEIGHT: bold">To:</SPAN></B> Mahler Thomas= ;=20 Objectbridge (E-Mail)<BR><B><SPAN style=3D"FONT-WEIGHT: bold">Cc:</SPAN= ></B>=20 Matthew Baird (E-Mail)<BR><B><SPAN=20 style=3D"FONT-WEIGHT: bold">Subject:</SPAN></B> Re: [OJB-developers] qu= ality=20 improvements</SPAN></FONT></P> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times New= Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3DArial size= =3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">hi,</SPAN></FONT></P></DI= V> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times New= Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3DArial size= =3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">we already have a lot of = test=20 cases (not enough, i know) and we also have a lot test classes and= test=20 tables.</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3DArial size= =3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">for 1:n we have productGr= oup -=20 articles, for m:n there are persons - projects and the graphEdge - grap= hNode=20 </SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3DArial size= =3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">and many more all with th= eir own=20 tables.</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times New= Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3DArial size= =3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">so i propose to have a co= mmon=20 object-model for our test cases. </SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3DArial size= =3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">this model should contain= =20 real-world classes, like persons, projects etc. that are known by every= body=20 (not A,B etc.). </SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3DArial size= =3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">these classes could also = be=20 useful for examples and tutorials.</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times New= Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3DArial size= =3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">what do you think=20 ?</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times New= Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3DArial size= =3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">jakob</SPAN></FONT></P></= DIV> <BLOCKQUOTE=20 style=3D"BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: med= ium none; PADDING-LEFT: 4pt; PADDING-BOTTOM: 0in; MARGIN: 5pt 0in 5pt 3.75p= t; BORDER-LEFT: black 1.5pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: medium = none"> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3DArial si= ze=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">----- Original Message = -----=20 </SPAN></FONT></P></DIV> <DIV style=3D"font-color: black"> <P class=3DMsoNormal style=3D"BACKGROUND: #e4e4e4; MARGIN-LEFT: 1in">= <B><FONT=20 face=3DArial size=3D2><SPAN=20 style=3D"FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">From= :</SPAN></FONT></B><FONT=20 face=3DArial size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Ar= ial"> <A=20 title=3Dt...@it...=20 href=3D"mailto:tho...@it...">Mahler Thomas</A>=20 </SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><B><FONT face=3DArial= =20 size=3D2><SPAN=20 style=3D"FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">To:<= /SPAN></FONT></B><FONT=20 face=3DArial size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Ar= ial"> <A=20 title=3Do...@li...=20 href=3D"mailto:obj...@li...">Objectb= ridge=20 (E-Mail)</A> </SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><B><FONT face=3DArial= =20 size=3D2><SPAN=20 style=3D"FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">Cc:<= /SPAN></FONT></B><FONT=20 face=3DArial size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Ar= ial"> <A=20 title=3DM...@mo...=20 href=3D"mailto:Mat...@mo...">Matthew Baird (E-Mail)</A>= =20 </SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><B><FONT face=3DArial= =20 size=3D2><SPAN=20 style=3D"FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">Sent= :</SPAN></FONT></B><FONT=20 face=3DArial size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Ar= ial">=20 Thursday, June 13, 2002 9:21 AM</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><B><FONT face=3DArial= =20 size=3D2><SPAN=20 style=3D"FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Arial">Subj= ect:</SPAN></FONT></B><FONT=20 face=3DArial size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Ar= ial">=20 [OJB-developers] quality improvements</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times N= ew Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DI= V> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">= Hi=20 all,</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times N= ew Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DI= V> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">= OJB is=20 making a lot of progress in the last months. We have tons of new feat= ures=20 and a lot of very good refactorings of the internal=20 mechanisms.</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">= So far so=20 good!</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times N= ew Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DI= V> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">= We did=20 not succeed to improve our regression testsuite accordingly. Of cours= e=20 there a lot of new TestCases. But there are still many things not cov= ered=20 thoroughly.</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times N= ew Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DI= V> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">= Matthew=20 prepared a list of missing testcases, enumerating some of the most ur= gent=20 tests:</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times N= ew Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DI= V> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times N= ew Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DI= V> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">1= .=20 One-To-One test (for both ODMG and PB)</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">&= nbsp; =20 Create/Read/Update/Delete</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">&= nbsp; =20 Create/Read/Update/Delete with Proxies</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">&= nbsp; =20 Create/Read/Update/Delete with class that belongs to set of classes m= apped=20 to same table.</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">2= .=20 One-To-Many test (for both ODMG and PB)</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">&= nbsp; =20 Create/Read/Update/Delete</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">&= nbsp; =20 Create/Read/Update/Delete with Proxies</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">&= nbsp; =20 Create/Read/Update/Delete with class that belongs to set of classes m= apped=20 to same table.</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">3= .=20 Many-To-Many test (for both ODMG and PB) (both types of=20 composition)</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">&= nbsp; =20 Create/Read/Update/Delete</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">&= nbsp; =20 Create/Read/Update/Delete with Proxies</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">&= nbsp; =20 Create/Read/Update/Delete with class that belongs to set of classes m= apped=20 to same table.</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">4= .=20 ODMGCollections test</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">&= nbsp; =20 Create/Read/Update/Delete</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">&= nbsp; =20 Create/Read/Update/Delete with proxies</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">&= nbsp; =20 PerformanceTest</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">&= nbsp; =20 Empty Collections Test</SPAN></FONT></P></DIV> <DIV style=3D"MARGIN-LEFT: 9pt"> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">&= nbsp; =20 Create/Read/Update/Delete with class that belongs to set of classes m= apped=20 to same table.</SPAN></FONT></P></DIV> <DIV style=3D"MARGIN-LEFT: 9pt"> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">&= nbsp; =20 </SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">5= .=20 Conversions Tests</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">6= .=20 LockMap performance tests</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">7= . OQL=20 ORDER BY tests</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">8= .=20 Concurrent Update Test</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">9= .=20 Deadlock test</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">1= 0. Key=20 generation tests</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">1= 1.=20 Duplicate key insertion test</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">1= 2.=20 multi-pk's test</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">1= 3.=20 callbacks test</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">1= 4. Race=20 Condition tests</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">1= 5. Lock=20 Modes test</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">1= 6.=20 CLOB/BLOB/LOB tests.</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">1= 7.=20 Delete by Query Tests</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 color=3Dblack size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'">1= 8.=20 Query By Example tests with multiple classes mapped to same=20 table)</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times N= ew Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DI= V> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">= Each of=20 us could easily add at least 5 additional urgent testcases to th= is=20 list!</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times N= ew Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DI= V> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">= So I'm=20 requesting all to join the OJB quality improvement initiative an= d=20 contribute TestCases.</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">= Feel free=20 to implement some of those 18 tests mentioned above or to contri= bute=20 your own TestCases.</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times N= ew Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DI= V> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">= As I=20 mentioned in my </SPAN></FONT><FONT size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt"><A=20 href=3D"http://objectbridge.sourceforge.net/team.html"><FONT=20 face=3D"Courier New"><SPAN=20 style=3D"FONT-FAMILY: 'Courier New'">http://objectbridge.sourceforge.= net/team.html</SPAN></FONT></A></SPAN></FONT><FONT=20 face=3D"Courier New" size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"> document = it's=20 best practice to add new TestCases with all new features or=20 refactorings!</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times N= ew Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DI= V> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 size=3D2><SPAN style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">= Thanks=20 for helping to improve code quality,</SPAN></FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times N= ew Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DI= V> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">cheers,</SPAN><= /FONT></P></DIV> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Times N= ew Roman"=20 size=3D3><SPAN style=3D"FONT-SIZE: 12pt"></SPAN></FONT> </P></DI= V> <DIV> <P class=3DMsoNormal style=3D"MARGIN-LEFT: 1in"><FONT face=3D"Courier= New"=20 size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Thomas</SPAN></= FONT><FONT=20 face=3DArial size=3D2><SPAN=20 style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial"> </SPAN></FONT></P= ></DIV></BLOCKQUOTE></BLOCKQUOTE></DIV></BLOCKQUOTE></BODY></HTML> |
From: Jason v. Z. <jv...@ze...> - 2002-06-14 17:11:17
|
Hi, Just a reminder: don't touch the repository after 8am EST. I will start moving the code over tomorrow morning. -- jvz. Jason van Zyl jv...@ap... http://tambora.zenplex.org |
From: Chris G. <CGr...@de...> - 2002-06-14 16:43:52
|
+1. I like the idea of using the WebShop classes as a basis. When/while we do this, would it be a good idea to start moving tests from the test.ojb package into the ojb package? That way we can include tests of protected methods where useful. Cheers, Chris Greenlee |
From: <tr...@th...> - 2002-06-14 16:16:42
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=iso-8859-1"> <META content="MSHTML 6.00.2716.2200" name=GENERATOR> <STYLE></STYLE> </HEAD> <BODY bgColor=#ffffff>+1 <br> <br> ---- Original Message ---- <br> From: Jakob Braeuchi <<a href="mailto:jbr...@ho...">jbr...@ho...</a>> <br> Sent: 2002-06-14 <br> To: Mahler Thomas <<a href="mailto:tho...@it...">tho...@it...</a>>, <br> "Objectbridge (E-Mail)" <<a href="mailto:obj...@li...">obj...@li...</a>> <br> Subject: Re: [OJB-developers] quality improvements <br> <br> <DIV><FONT face=Arial size=2>hi,</FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2>we already have a lot of test cases (not enough, i know) and we also have a lot test classes and test tables.</FONT></DIV> <DIV><FONT face=Arial size=2>for 1:n we have productGroup - articles, for m:n there are persons - projects and the graphEdge - graphNode </FONT></DIV> <DIV><FONT face=Arial size=2>and many more all with their own tables.</FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2>so i propose to have a common object-model for our test cases. </FONT></DIV> <DIV><FONT face=Arial size=2>this model should contain real-world classes, like persons, projects etc. that are known by everybody (not A,B etc.). </FONT></DIV> <DIV><FONT face=Arial size=2>these classes could also be useful for examples and tutorials.</FONT></DIV> <DIV> </DIV> <DIV><FONT face=Arial size=2>what do you think ?</FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <DIV><FONT face=Arial size=2>jakob</FONT></DIV> <BLOCKQUOTE dir=ltr style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px"> <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV> <DIV style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> <A title=tho...@it... href="mailto:tho...@it...">Mahler Thomas</A> </DIV> <DIV style="FONT: 10pt arial"><B>To:</B> <A title=obj...@li... href="mailto:obj...@li...">Objectbridge (E-Mail)</A> </DIV> <DIV style="FONT: 10pt arial"><B>Cc:</B> <A title=Mat...@mo... href="mailto:Mat...@mo...">Matthew Baird (E-Mail)</A> </DIV> <DIV style="FONT: 10pt arial"><B>Sent:</B> Thursday, June 13, 2002 9:21 AM</DIV> <DIV style="FONT: 10pt arial"><B>Subject:</B> [OJB-developers] quality improvements</DIV> <DIV><BR></DIV> <DIV><SPAN class=671560707-13062002><FONT face="Courier New" size=2>Hi all,</FONT></SPAN></DIV> <DIV><FONT size=2><FONT size=2><FONT size=2><FONT face="Courier New" size=2><SPAN class=671560707-13062002></SPAN></FONT></FONT></FONT></FONT> </DIV> <DIV><SPAN class=671560707-13062002><FONT face="Courier New" size=2>OJB is making a lot of progress in the last months. We have tons of new features and a lot of very good refactorings of the internal mechanisms.</FONT></SPAN></DIV> <DIV><SPAN class=671560707-13062002><FONT face="Courier New" size=2>So far so good!</FONT></SPAN></DIV> <DIV><FONT size=2><FONT size=2><FONT size=2><FONT face="Courier New" size=2><SPAN class=671560707-13062002></SPAN></FONT></FONT></FONT></FONT> </DIV> <DIV><SPAN class=671560707-13062002><FONT face="Courier New" size=2>We did not succeed to improve our regression testsuite accordingly. Of course there a lot of new TestCases. But there are still many things not covered thoroughly.</FONT></SPAN></DIV> <DIV><FONT size=2><FONT size=2><FONT size=2><FONT face="Courier New" size=2><SPAN class=671560707-13062002></SPAN></FONT></FONT></FONT></FONT> </DIV> <DIV><SPAN class=671560707-13062002><FONT face="Courier New" size=2>Matthew prepared a list of missing testcases, enumerating some of the most urgent tests:</FONT></SPAN></DIV> <DIV><FONT size=2><FONT size=2><FONT size=2><FONT face="Courier New" size=2><SPAN class=671560707-13062002></SPAN></FONT></FONT></FONT></FONT> </DIV> <DIV><FONT size=2><FONT size=2><FONT size=2><FONT size=2><SPAN class=671560707-13062002><FONT face="Courier New"></FONT></FONT></FONT></FONT></FONT> </DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>1. One-To-One test (for both ODMG and PB)</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000> Create/Read/Update/Delete</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000> Create/Read/Update/Delete with Proxies</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000> Create/Read/Update/Delete with class that belongs to set of classes mapped to same table.</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>2. One-To-Many test (for both ODMG and PB)</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000> Create/Read/Update/Delete</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000> Create/Read/Update/Delete with Proxies</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000> Create/Read/Update/Delete with class that belongs to set of classes mapped to same table.</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>3. Many-To-Many test (for both ODMG and PB) (both types of composition)</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000> Create/Read/Update/Delete</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000> Create/Read/Update/Delete with Proxies</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000> Create/Read/Update/Delete with class that belongs to set of classes mapped to same table.</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>4. ODMGCollections test</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000> Create/Read/Update/Delete</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000> Create/Read/Update/Delete with proxies</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000> PerformanceTest</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000> Empty Collections Test</FONT></SPAN></DIV> <DIV class=MsoNormal style="MARGIN-LEFT: 9pt"><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000> Create/Read/Update/Delete with class that belongs to set of classes mapped to same table.</FONT></SPAN></DIV> <DIV class=MsoNormal style="MARGIN-LEFT: 9pt"><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000> </FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>5. Conversions Tests</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>6. LockMap performance tests</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>7. OQL ORDER BY tests</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>8. Concurrent Update Test</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>9. Deadlock test</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>10. Key generation tests</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>11. Duplicate key insertion test</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>12. multi-pk's test</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>13. callbacks test</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>14. Race Condition tests</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>15. Lock Modes test</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>16. CLOB/BLOB/LOB tests.</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>17. Delete by Query Tests</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000>18. Query By Example tests with multiple classes mapped to same table)</FONT></SPAN></DIV> <DIV class=MsoNormal><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><FONT face="Courier New" color=#000000></FONT></SPAN> </DIV> <DIV class=MsoNormal><FONT face="Courier New" size=2><SPAN class=671560707-13062002>Each of us could easily add at least 5 additional urgent testcases to this list!</SPAN></FONT></DIV> <DIV class=MsoNormal><FONT face="Courier New" size=2><SPAN class=671560707-13062002></SPAN></FONT> </DIV> <DIV class=MsoNormal><FONT face="Courier New" size=2><SPAN class=671560707-13062002>So I'm requesting all to join the OJB quality improvement initiative and contribute TestCases.</SPAN></FONT></DIV> <DIV class=MsoNormal><FONT face="Courier New" size=2><SPAN class=671560707-13062002>Feel free to implement some of those 18 tests mentioned above or to contribute your own TestCases.</SPAN></FONT></DIV> <DIV class=MsoNormal><FONT face="Courier New" size=2><SPAN class=671560707-13062002></SPAN></FONT> </DIV> <DIV class=MsoNormal><FONT size=2><SPAN class=671560707-13062002><FONT face="Courier New">As I mentioned in my </FONT><A href="http://objectbridge.sourceforge.net/team.html"><FONT face="Courier New">http://objectbridge.sourceforge.net/team.html</FONT></A><FONT face="Courier New"> document it's best practice to add new TestCases with all new features or refactorings!</FONT></SPAN></FONT></DIV> <DIV class=MsoNormal><FONT face="Courier New" size=2><SPAN class=671560707-13062002></SPAN></FONT> </DIV> <DIV class=MsoNormal><FONT face="Courier New" size=2><SPAN class=671560707-13062002>Thanks for helping to improve code quality,</SPAN></FONT></DIV> <DIV class=MsoNormal><FONT face="Courier New" size=2><SPAN class=671560707-13062002></SPAN></FONT> </DIV> <DIV class=MsoNormal><FONT face="Courier New" size=2><SPAN class=671560707-13062002>cheers,</SPAN></FONT></DIV> <DIV class=MsoNormal><FONT face="Courier New" size=2><SPAN class=671560707-13062002></SPAN></FONT> </DIV> <DIV class=MsoNormal><FONT face=Arial size=2><SPAN class=671560707-13062002><FONT face="Courier New">Thomas</FONT> </SPAN></FONT></SPAN></DIV></BLOCKQUOTE></BODY></HTML> |
From: Matthew B. <ma...@so...> - 2002-06-14 15:34:29
|
+1 So if this is the way we go, do we just start adding to the bottom of the repository until we get the whole thing up and running, then move the tests over? What's the plan? m -----Original Message----- From: Mahler Thomas [mailto:tho...@it...] Sent: Friday, June 14, 2002 1:21 AM To: 'Matthew Baird'; Objectbridge (E-Mail); 'Jakob Braeuchi' Subject: AW: [OJB-developers] quality improvements I like this idea as it will allow to build nice regression tests AND to give a lot of sample code to help users building applications! attached you'll find a chapter from a (work-in-progress, reviews are available at the serverside.com ) O'Reilly book that provides a nice webshop doamin model. It also shows how to implement this with OJB. Maybe this could serve as a starting point for "OJB Petstore" cheers, Thomas |
From: Georg S. <ge...@me...> - 2002-06-14 09:56:35
|
Hi Jason + all others, I think it would be a good idea to fix broken line endings when moving over to apache. Attached you find a list of files with broken endings. The whole issue evolves around the fact that some files obviously contain CR in the repository. cvs normally stores files with a single LF as the line ending character and anybody that checks out gets the line endings converted by the cvs-client to the ones used on his platform. Just assume a file with a single line in the repository package ojb.broker;LF As you can see the file contains a single LF character to mark the line ending. Somebody checking out under windows would get the file like this package ojb.broker;CRLF and somebody checking out under unix would get the following package ojb.broker;LF so, all is happy on both sides and diffs will also work. The problem is that some files (see attachment) seem to be stored as package ojb.broker;CRLF in the repository, which leads to the following situation when checking out on unix package ojb.broker;CRLF which leads to a funny ^M character being displayed at the end of each line, which is ugly to look at and worse makes diffing virtually impossible. Since not all files have these screwed line endings (TransactionImpl e.g. is OK), there must be some people who add files to the repository with some funny feature turned on in their cvs client. This is a very crude guess about what is happening and I am not an expert myself in this field. Maybe somebody has a better explanation. I have attached a list of files that have broken line endings and I think it would be a good idea to fix them when doing the move. Cheers Georg |
From: Matthew B. <ma...@so...> - 2002-06-14 07:28:51
|
I agree. I think we need some sort of domain to model that lends itself to testing all the complexities. It would be great to come up with a class diagram that showed all the moving parts that we could agree on first, then start to build a new scenario to base all test cases on. I think the general direction has been somewhat of a store (?). Maybe we build an ecommerce type of application (with no UI) where we have the users who have carts that contain items. We could also model an administrative function where admins have roles to manage different stores. The complexity of an ecommerce model is pretty much unbounded, so I don't think we'll ever run out of ways to make new test cases. Later if someone wants to use struts to show how to use OJB in a servlet engine, or in a ejb environment we could extend it that way. Either that or we could build the "OJB Petstore" which would be similar to the above. Any other recommendations? m -----Original Message----- From: Jakob Braeuchi [mailto:jbr...@ho...] Sent: Friday, June 14, 2002 12:16 AM To: Matthew Baird; Mahler Thomas; Objectbridge (E-Mail) Subject: Re: [OJB-developers] quality improvements hi matthew, imho we need to extend our object model to match the different scenarios. the current model with a class and a table for each testcase is getting too cluttered. i don't like changing metadata at runtime for testcases. jakob ----- Original Message ----- From: Matthew <mailto:ma...@so...> Baird To: 'Jakob <mailto:jbr...@ho...> Braeuchi' ; Mahler Thomas <mailto:tho...@it...> ; Objectbridge (E-Mail) <mailto:obj...@li...> Cc: Matthew <mailto:Mat...@mo...> Baird (E-Mail) Sent: Friday, June 14, 2002 9:00 AM Subject: RE: [OJB-developers] quality improvements I would agree if we had a model for every permutation sometimes to simulate a complex scenario we need new tables that might not fit into the person/project/etc. Plus there is the different mappings. I guess we could change the mapping metadata at runtime, but the test becomes more complex.... Tough call. -----Original Message----- From: Jakob Braeuchi [mailto:jbr...@ho...] Sent: Thursday, June 13, 2002 11:29 PM To: Mahler Thomas; Objectbridge (E-Mail) Cc: Matthew Baird (E-Mail) Subject: Re: [OJB-developers] quality improvements hi, we already have a lot of test cases (not enough, i know) and we also have a lot test classes and test tables. for 1:n we have productGroup - articles, for m:n there are persons - projects and the graphEdge - graphNode and many more all with their own tables. so i propose to have a common object-model for our test cases. this model should contain real-world classes, like persons, projects etc. that are known by everybody (not A,B etc.). these classes could also be useful for examples and tutorials. what do you think ? jakob ----- Original Message ----- From: Mahler Thomas <mailto:tho...@it...> To: Objectbridge (E-Mail) <mailto:obj...@li...> Cc: Matthew <mailto:Mat...@mo...> Baird (E-Mail) Sent: Thursday, June 13, 2002 9:21 AM Subject: [OJB-developers] quality improvements Hi all, OJB is making a lot of progress in the last months. We have tons of new features and a lot of very good refactorings of the internal mechanisms. So far so good! We did not succeed to improve our regression testsuite accordingly. Of course there a lot of new TestCases. But there are still many things not covered thoroughly. Matthew prepared a list of missing testcases, enumerating some of the most urgent tests: 1. One-To-One test (for both ODMG and PB) Create/Read/Update/Delete Create/Read/Update/Delete with Proxies Create/Read/Update/Delete with class that belongs to set of classes mapped to same table. 2. One-To-Many test (for both ODMG and PB) Create/Read/Update/Delete Create/Read/Update/Delete with Proxies Create/Read/Update/Delete with class that belongs to set of classes mapped to same table. 3. Many-To-Many test (for both ODMG and PB) (both types of composition) Create/Read/Update/Delete Create/Read/Update/Delete with Proxies Create/Read/Update/Delete with class that belongs to set of classes mapped to same table. 4. ODMGCollections test Create/Read/Update/Delete Create/Read/Update/Delete with proxies PerformanceTest Empty Collections Test Create/Read/Update/Delete with class that belongs to set of classes mapped to same table. 5. Conversions Tests 6. LockMap performance tests 7. OQL ORDER BY tests 8. Concurrent Update Test 9. Deadlock test 10. Key generation tests 11. Duplicate key insertion test 12. multi-pk's test 13. callbacks test 14. Race Condition tests 15. Lock Modes test 16. CLOB/BLOB/LOB tests. 17. Delete by Query Tests 18. Query By Example tests with multiple classes mapped to same table) Each of us could easily add at least 5 additional urgent testcases to this list! So I'm requesting all to join the OJB quality improvement initiative and contribute TestCases. Feel free to implement some of those 18 tests mentioned above or to contribute your own TestCases. As I mentioned in my <http://objectbridge.sourceforge.net/team.html> http://objectbridge.sourceforge.net/team.html document it's best practice to add new TestCases with all new features or refactorings! Thanks for helping to improve code quality, cheers, Thomas |
From: Jakob B. <jbr...@ho...> - 2002-06-14 07:16:09
|
hi matthew, imho we need to extend our object model to match the different = scenarios.=20 the current model with a class and a table for each testcase is getting = too cluttered. i don't like changing metadata at runtime for testcases. jakob ----- Original Message -----=20 From: Matthew Baird=20 To: 'Jakob Braeuchi' ; Mahler Thomas ; Objectbridge (E-Mail)=20 Cc: Matthew Baird (E-Mail)=20 Sent: Friday, June 14, 2002 9:00 AM Subject: RE: [OJB-developers] quality improvements I would agree if we had a model for every permutation sometimes to = simulate a complex scenario we need new tables that might not fit into = the person/project/etc. Plus there is the different mappings. I guess we = could change the mapping metadata at runtime, but the test becomes more = complex.... Tough call. -----Original Message----- From: Jakob Braeuchi [mailto:jbr...@ho...]=20 Sent: Thursday, June 13, 2002 11:29 PM To: Mahler Thomas; Objectbridge (E-Mail) Cc: Matthew Baird (E-Mail) Subject: Re: [OJB-developers] quality improvements hi, we already have a lot of test cases (not enough, i know) and we also = have a lot test classes and test tables. for 1:n we have productGroup - articles, for m:n there are persons - = projects and the graphEdge - graphNode=20 and many more all with their own tables. so i propose to have a common object-model for our test cases.=20 this model should contain real-world classes, like persons, projects = etc. that are known by everybody (not A,B etc.).=20 these classes could also be useful for examples and tutorials. what do you think ? jakob ----- Original Message -----=20 From: Mahler Thomas=20 To: Objectbridge (E-Mail)=20 Cc: Matthew Baird (E-Mail)=20 Sent: Thursday, June 13, 2002 9:21 AM Subject: [OJB-developers] quality improvements Hi all, OJB is making a lot of progress in the last months. We have tons of = new features and a lot of very good refactorings of the internal = mechanisms. So far so good! We did not succeed to improve our regression testsuite accordingly. = Of course there a lot of new TestCases. But there are still many things = not covered thoroughly. Matthew prepared a list of missing testcases, enumerating some of = the most urgent tests: 1. One-To-One test (for both ODMG and PB) Create/Read/Update/Delete Create/Read/Update/Delete with Proxies Create/Read/Update/Delete with class that belongs to set of = classes mapped to same table. 2. One-To-Many test (for both ODMG and PB) Create/Read/Update/Delete Create/Read/Update/Delete with Proxies Create/Read/Update/Delete with class that belongs to set of = classes mapped to same table. 3. Many-To-Many test (for both ODMG and PB) (both types of = composition) Create/Read/Update/Delete Create/Read/Update/Delete with Proxies Create/Read/Update/Delete with class that belongs to set of = classes mapped to same table. 4. ODMGCollections test Create/Read/Update/Delete Create/Read/Update/Delete with proxies PerformanceTest Empty Collections Test Create/Read/Update/Delete with class that belongs to set of = classes mapped to same table. =20 5. Conversions Tests 6. LockMap performance tests 7. OQL ORDER BY tests 8. Concurrent Update Test 9. Deadlock test 10. Key generation tests 11. Duplicate key insertion test 12. multi-pk's test 13. callbacks test 14. Race Condition tests 15. Lock Modes test 16. CLOB/BLOB/LOB tests. 17. Delete by Query Tests 18. Query By Example tests with multiple classes mapped to same = table) Each of us could easily add at least 5 additional urgent testcases = to this list! So I'm requesting all to join the OJB quality improvement initiative = and contribute TestCases. Feel free to implement some of those 18 tests mentioned above or to = contribute your own TestCases. As I mentioned in my http://objectbridge.sourceforge.net/team.html = document it's best practice to add new TestCases with all new features = or refactorings! Thanks for helping to improve code quality, cheers, Thomas=20 |
From: Matthew B. <ma...@so...> - 2002-06-14 07:00:01
|
I would agree if we had a model for every permutation sometimes to simulate a complex scenario we need new tables that might not fit into the person/project/etc. Plus there is the different mappings. I guess we could change the mapping metadata at runtime, but the test becomes more complex.... Tough call. -----Original Message----- From: Jakob Braeuchi [mailto:jbr...@ho...] Sent: Thursday, June 13, 2002 11:29 PM To: Mahler Thomas; Objectbridge (E-Mail) Cc: Matthew Baird (E-Mail) Subject: Re: [OJB-developers] quality improvements hi, we already have a lot of test cases (not enough, i know) and we also have a lot test classes and test tables. for 1:n we have productGroup - articles, for m:n there are persons - projects and the graphEdge - graphNode and many more all with their own tables. so i propose to have a common object-model for our test cases. this model should contain real-world classes, like persons, projects etc. that are known by everybody (not A,B etc.). these classes could also be useful for examples and tutorials. what do you think ? jakob ----- Original Message ----- From: Mahler <mailto:tho...@it...> Thomas To: Objectbridge (E-Mail) <mailto:obj...@li...> Cc: Matthew <mailto:Mat...@mo...> Baird (E-Mail) Sent: Thursday, June 13, 2002 9:21 AM Subject: [OJB-developers] quality improvements Hi all, OJB is making a lot of progress in the last months. We have tons of new features and a lot of very good refactorings of the internal mechanisms. So far so good! We did not succeed to improve our regression testsuite accordingly. Of course there a lot of new TestCases. But there are still many things not covered thoroughly. Matthew prepared a list of missing testcases, enumerating some of the most urgent tests: 1. One-To-One test (for both ODMG and PB) Create/Read/Update/Delete Create/Read/Update/Delete with Proxies Create/Read/Update/Delete with class that belongs to set of classes mapped to same table. 2. One-To-Many test (for both ODMG and PB) Create/Read/Update/Delete Create/Read/Update/Delete with Proxies Create/Read/Update/Delete with class that belongs to set of classes mapped to same table. 3. Many-To-Many test (for both ODMG and PB) (both types of composition) Create/Read/Update/Delete Create/Read/Update/Delete with Proxies Create/Read/Update/Delete with class that belongs to set of classes mapped to same table. 4. ODMGCollections test Create/Read/Update/Delete Create/Read/Update/Delete with proxies PerformanceTest Empty Collections Test Create/Read/Update/Delete with class that belongs to set of classes mapped to same table. 5. Conversions Tests 6. LockMap performance tests 7. OQL ORDER BY tests 8. Concurrent Update Test 9. Deadlock test 10. Key generation tests 11. Duplicate key insertion test 12. multi-pk's test 13. callbacks test 14. Race Condition tests 15. Lock Modes test 16. CLOB/BLOB/LOB tests. 17. Delete by Query Tests 18. Query By Example tests with multiple classes mapped to same table) Each of us could easily add at least 5 additional urgent testcases to this list! So I'm requesting all to join the OJB quality improvement initiative and contribute TestCases. Feel free to implement some of those 18 tests mentioned above or to contribute your own TestCases. As I mentioned in my <http://objectbridge.sourceforge.net/team.html> http://objectbridge.sourceforge.net/team.html document it's best practice to add new TestCases with all new features or refactorings! Thanks for helping to improve code quality, cheers, Thomas |
From: Jakob B. <jbr...@ho...> - 2002-06-14 06:28:42
|
hi, we already have a lot of test cases (not enough, i know) and we also = have a lot test classes and test tables. for 1:n we have productGroup - articles, for m:n there are persons - = projects and the graphEdge - graphNode=20 and many more all with their own tables. so i propose to have a common object-model for our test cases.=20 this model should contain real-world classes, like persons, projects = etc. that are known by everybody (not A,B etc.).=20 these classes could also be useful for examples and tutorials. what do you think ? jakob ----- Original Message -----=20 From: Mahler Thomas=20 To: Objectbridge (E-Mail)=20 Cc: Matthew Baird (E-Mail)=20 Sent: Thursday, June 13, 2002 9:21 AM Subject: [OJB-developers] quality improvements Hi all, OJB is making a lot of progress in the last months. We have tons of = new features and a lot of very good refactorings of the internal = mechanisms. So far so good! We did not succeed to improve our regression testsuite accordingly. Of = course there a lot of new TestCases. But there are still many things not = covered thoroughly. Matthew prepared a list of missing testcases, enumerating some of the = most urgent tests: 1. One-To-One test (for both ODMG and PB) Create/Read/Update/Delete Create/Read/Update/Delete with Proxies Create/Read/Update/Delete with class that belongs to set of = classes mapped to same table. 2. One-To-Many test (for both ODMG and PB) Create/Read/Update/Delete Create/Read/Update/Delete with Proxies Create/Read/Update/Delete with class that belongs to set of = classes mapped to same table. 3. Many-To-Many test (for both ODMG and PB) (both types of = composition) Create/Read/Update/Delete Create/Read/Update/Delete with Proxies Create/Read/Update/Delete with class that belongs to set of = classes mapped to same table. 4. ODMGCollections test Create/Read/Update/Delete Create/Read/Update/Delete with proxies PerformanceTest Empty Collections Test Create/Read/Update/Delete with class that belongs to set of = classes mapped to same table. =20 5. Conversions Tests 6. LockMap performance tests 7. OQL ORDER BY tests 8. Concurrent Update Test 9. Deadlock test 10. Key generation tests 11. Duplicate key insertion test 12. multi-pk's test 13. callbacks test 14. Race Condition tests 15. Lock Modes test 16. CLOB/BLOB/LOB tests. 17. Delete by Query Tests 18. Query By Example tests with multiple classes mapped to same table) Each of us could easily add at least 5 additional urgent testcases to = this list! So I'm requesting all to join the OJB quality improvement initiative = and contribute TestCases. Feel free to implement some of those 18 tests mentioned above or to = contribute your own TestCases. As I mentioned in my http://objectbridge.sourceforge.net/team.html = document it's best practice to add new TestCases with all new features = or refactorings! Thanks for helping to improve code quality, cheers, Thomas=20 |
From: Jakob B. <jbr...@ho...> - 2002-06-14 06:01:01
|
hi galvin, i run your test case and it works fine. the entries in indirection table are properly removed when you store the empty projects-collection. the projects are NOT deleted. i think this behaviour is ok. if you have multiple persons referencing the same projects, it's not possible to delete the projects because of a delete of the relationship between person and project. jakob ----- Original Message ----- From: "Galvin Hsiu" <gk...@ya...> To: <obj...@li...> Sent: Thursday, June 13, 2002 9:29 PM Subject: [OJB-developers] M-N Unidirectional updates (notably removal of dependent objects) Failing > Btw, CVS build is failing since the javac compiler is > getting confused about IdentityHashMap() in > PersistentBrokerImpl - it exists in java.util and also > in ojb.broker.util. > > Took out the newest CVS version and compiled it - > wrote a junit test case to handle updates to a M-N > unidirectional relationship: > > This test case does the following: > > 1) Retrieves a person > 2) Gets its associated projects > 3) Adds a project to a particular person (this passes) > 4) Checks to see if the person is associated to the > new project > 5) Removes all projects to a particular person (this > fails) > 6) Checks to see if the person has no associated > projects > > This really limits the use of the current CVS > unidirectional M-N mapping. > > public void testUpdateUnidirectional() > { > try > { > PersonUnidirectional p = new > PersonUnidirectional(); > p.setId(1); > Query q = QueryFactory.newQuery(p); > p = (PersonUnidirectional) > broker.getObjectByQuery(q); > Collection projects = p.getProjects(); > ProjectUnidirectional[] projectArray = > (ProjectUnidirectional[]) projects.toArray(new > ProjectUnidirectional[0]); // load it > > assertNotNull(projects); > int count = projects.size(); > > ProjectUnidirectional proj = new > ProjectUnidirectional(); > proj.setTitle("MARS"); > proj.setDescription("colonization of planet Mars"); > > p.getProjects().add(proj); > broker.beginTransaction(); > broker.store(p); > broker.commitTransaction(); > > broker.clearCache(); > > p = (PersonUnidirectional) > broker.getObjectByQuery(q); > > assertEquals(count + 1, p.getProjects().size()); > > broker.beginTransaction(); > > projects = p.getProjects(); > projects.clear(); > p.setProjects(projects); > > broker.store(p); > broker.commitTransaction(); > > broker.clearCache(); > > p = (PersonUnidirectional) > broker.getObjectByQuery(q); > assertEquals(0, p.getProjects().size()); > } > catch (Throwable t) > { > System.out.println(t.getMessage()); > t.printStackTrace(); > fail(t.getMessage()); > } > } > > __________________________________________________ > Do You Yahoo!? > Yahoo! - Official partner of 2002 FIFA World Cup > http://fifaworldcup.yahoo.com > > _______________________________________________________________ > > Don't miss the 2002 Sprint PCS Application Developer's Conference > August 25-28 in Las Vegas - http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink > > _______________________________________________ > Objectbridge-developers mailing list > Obj...@li... > https://lists.sourceforge.net/lists/listinfo/objectbridge-developers > |
From: Jakob B. <jbr...@ho...> - 2002-06-14 05:39:49
|
hi galvin, i resolved the problem with IdentityHashMap and will have a look at your test case. jakob ----- Original Message ----- From: "Galvin Hsiu" <gk...@ya...> To: <obj...@li...> Sent: Thursday, June 13, 2002 9:29 PM Subject: [OJB-developers] M-N Unidirectional updates (notably removal of dependent objects) Failing > Btw, CVS build is failing since the javac compiler is > getting confused about IdentityHashMap() in > PersistentBrokerImpl - it exists in java.util and also > in ojb.broker.util. > > Took out the newest CVS version and compiled it - > wrote a junit test case to handle updates to a M-N > unidirectional relationship: > > This test case does the following: > > 1) Retrieves a person > 2) Gets its associated projects > 3) Adds a project to a particular person (this passes) > 4) Checks to see if the person is associated to the > new project > 5) Removes all projects to a particular person (this > fails) > 6) Checks to see if the person has no associated > projects > > This really limits the use of the current CVS > unidirectional M-N mapping. > > public void testUpdateUnidirectional() > { > try > { > PersonUnidirectional p = new > PersonUnidirectional(); > p.setId(1); > Query q = QueryFactory.newQuery(p); > p = (PersonUnidirectional) > broker.getObjectByQuery(q); > Collection projects = p.getProjects(); > ProjectUnidirectional[] projectArray = > (ProjectUnidirectional[]) projects.toArray(new > ProjectUnidirectional[0]); // load it > > assertNotNull(projects); > int count = projects.size(); > > ProjectUnidirectional proj = new > ProjectUnidirectional(); > proj.setTitle("MARS"); > proj.setDescription("colonization of planet Mars"); > > p.getProjects().add(proj); > broker.beginTransaction(); > broker.store(p); > broker.commitTransaction(); > > broker.clearCache(); > > p = (PersonUnidirectional) > broker.getObjectByQuery(q); > > assertEquals(count + 1, p.getProjects().size()); > > broker.beginTransaction(); > > projects = p.getProjects(); > projects.clear(); > p.setProjects(projects); > > broker.store(p); > broker.commitTransaction(); > > broker.clearCache(); > > p = (PersonUnidirectional) > broker.getObjectByQuery(q); > assertEquals(0, p.getProjects().size()); > } > catch (Throwable t) > { > System.out.println(t.getMessage()); > t.printStackTrace(); > fail(t.getMessage()); > } > } > > __________________________________________________ > Do You Yahoo!? > Yahoo! - Official partner of 2002 FIFA World Cup > http://fifaworldcup.yahoo.com > > _______________________________________________________________ > > Don't miss the 2002 Sprint PCS Application Developer's Conference > August 25-28 in Las Vegas - http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink > > _______________________________________________ > Objectbridge-developers mailing list > Obj...@li... > https://lists.sourceforge.net/lists/listinfo/objectbridge-developers > |
From: Galvin H. <gk...@ya...> - 2002-06-13 19:30:03
|
Btw, CVS build is failing since the javac compiler is getting confused about IdentityHashMap() in PersistentBrokerImpl - it exists in java.util and also in ojb.broker.util. Took out the newest CVS version and compiled it - wrote a junit test case to handle updates to a M-N unidirectional relationship: This test case does the following: 1) Retrieves a person 2) Gets its associated projects 3) Adds a project to a particular person (this passes) 4) Checks to see if the person is associated to the new project 5) Removes all projects to a particular person (this fails) 6) Checks to see if the person has no associated projects This really limits the use of the current CVS unidirectional M-N mapping. public void testUpdateUnidirectional() { try { PersonUnidirectional p = new PersonUnidirectional(); p.setId(1); Query q = QueryFactory.newQuery(p); p = (PersonUnidirectional) broker.getObjectByQuery(q); Collection projects = p.getProjects(); ProjectUnidirectional[] projectArray = (ProjectUnidirectional[]) projects.toArray(new ProjectUnidirectional[0]); // load it assertNotNull(projects); int count = projects.size(); ProjectUnidirectional proj = new ProjectUnidirectional(); proj.setTitle("MARS"); proj.setDescription("colonization of planet Mars"); p.getProjects().add(proj); broker.beginTransaction(); broker.store(p); broker.commitTransaction(); broker.clearCache(); p = (PersonUnidirectional) broker.getObjectByQuery(q); assertEquals(count + 1, p.getProjects().size()); broker.beginTransaction(); projects = p.getProjects(); projects.clear(); p.setProjects(projects); broker.store(p); broker.commitTransaction(); broker.clearCache(); p = (PersonUnidirectional) broker.getObjectByQuery(q); assertEquals(0, p.getProjects().size()); } catch (Throwable t) { System.out.println(t.getMessage()); t.printStackTrace(); fail(t.getMessage()); } } __________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup http://fifaworldcup.yahoo.com |
From: Matthew B. <ma...@so...> - 2002-06-13 16:26:16
|
I nominate brad for test: 16. CLOB/BLOB/LOB tests. As he reported the bug :) But seriously, this is a really good example of why we need these tests. Thanks for reporting the Issue brad. -----Original Message----- From: Bradley A. Smith [mailto:br...@ba...] Sent: Thursday, June 13, 2002 9:13 AM To: obj...@li... Subject: [OJB-developers] Error in JdbcAccess.java I believe the calls to getSubString and getBytes are incorrect. case Types.CLOB : { java.sql.Clob aClob = rs.getClob(columnId); result = aClob.getSubString(0L, (int) aClob.length()); break; } case Types.BLOB : { java.sql.Blob aBlob = rs.getBlob(columnId); result = aBlob.getBytes(0L, (int) aBlob.length()); break; } According to the Javadoc for java.sql.Blob, the first parameter of getBytes or getSubString is the position, and the first byte/character is at position 1, not position 0. Thanks, Bradley |