On 12/7/01 9:52 PM, "Kelvin Tan" <[EMAIL PROTECTED]> wrote:

> Neglected to mention that this is with the CVS version checked out on Dec 7
> itself.

You've got the testcase, now you get to figure out what's wrong :-)

I don't know off the top of my head what the problem is.

 
> ----- Original Message -----
> From: Kelvin Tan <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Friday, December 07, 2001 6:11 PM
> Subject: [Torque] Failed testcase
> 
> 
> The testcase I've submitted below fails. The problem, I think, is that
> before a save() is called on an object whose collection has been modified,
> the modification is basically lost because of the way Torque caches the
> previous Criteria's dbhit. Attention to Line 1 and Line 2.
> 
> This situation would be possible in a high-load environment with lots of
> concurrent hits.
> 
> public class TorqueRunner
> {
>   /**
>    * Category used for logging in the runtime test class.
>    */
>   private static Category cat =
>           Category.getInstance(TorqueRunner.class.getName());
> 
>   public static void main(String[] args)
>           throws TorqueException, Exception
>   {
>       String configurationFile = "/schema/Torque.properties";
> 
>       // initializing Torque
>       try
>       {
>           Torque.init(configurationFile);
>       }
>       catch (Exception e)
>       {
>           throw new TorqueException("Can't initialize Torque!", e);
>       }
> 
>       // run the tests
>       TorqueRunner tr = new TorqueRunner();
> 
>       //tr.insertData();
>       //tr.retrieveData();
>       tr.test();
>       Runtime.getRuntime().exit(0);
>   }
> 
>   private void test() throws Exception
>   {
>       Civilization civ = new Civilization();
>       civ.setCivId("1");
>       civ.setName("Civilization");
>       civ.save();
> 
>       int newCivPeopleSize = civ.getCivPeoples(new Criteria()).size();
> 
>       CivPeople cp = new CivPeople();
>       cp.setCivId(civ.getCivId());
>       People p = new People();
>       p.setPeopleId("1");
>       p.setName("peoplename");
>       p.save();
>       cp.setPeopleId(p.getPeopleId());
>       //cp.save(); // Line 1
>       civ.addCivPeople(cp);
>       civ.getCivPeoples(new Criteria()).size(); // Line 2
>       civ.save();
>       civ = (Civilization) CivilizationPeer.doSelect(civ).firstElement();
>       int newerCivPeopleSize = civ.getCivPeoples(new Criteria()).size();
>       if (newerCivPeopleSize != (newCivPeopleSize + 1))
>           throw new Exception("Added people not reflected! Expected:"
>                               + (newCivPeopleSize + 1) + " but was:"
>                               + newerCivPeopleSize);
>   }
> }
> 
> 
> Regards,
> Kelvin Tan
> 
> Relevanz Pte Ltd
> http://www.relevanz.com
> 
> 180B Bencoolen St.
> The Bencoolen, #04-01
> S(189648)
> 
> Tel: 238 6229
> Fax: 337 4417
> 
> 
> 
> 
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to