public virtual void testThreads() { q.setAutomated(true); q.removeChildren(ElementName.QUEUEENTRY, null, null); q.setMaxCompletedEntries(999999999); for (int i = 0; i < 10; i++) { QueueTestThread queueTestThread = new QueueTestThread(); Thread runThread = new Thread(new ThreadStart(queueTestThread.Run)); runThread.Name = "Test Thread_" + i; runThread.Start(); } // now also zapp some... for (int j = 0; j < 100; j++) { JDFQueueEntry qex = q.getNextExecutableQueueEntry(); if (qex != null) { qex.setQueueEntryStatus(EnumQueueEntryStatus.Running); qex.setQueueEntryStatus(EnumQueueEntryStatus.Completed); } } while (iThread > 0) { StatusCounter.sleep(100); // wait for threads to be over } Assert.AreEqual(q.getQueueSize(), 1000); VElement v = q.getQueueEntryVector(); JDFQueueEntry qeLast = null; for (int i = 0; i < v.Count; i++) { JDFQueueEntry qe = (JDFQueueEntry)v[i]; Console.WriteLine(qe.getPriority() + " " + qe.getQueueEntryID() + " " + qe.getQueueEntryStatus()); Assert.IsTrue(qe.CompareTo(qeLast) >= 0); qeLast = qe; } v = q.getQueueEntryVector(new JDFAttributeMap(AttributeName.STATUS, "Completed"), null); Assert.AreEqual(100, v.Count); v = q.getQueueEntryVector(new JDFAttributeMap(AttributeName.STATUS, "Running"), null); Assert.IsNull(v); v = q.getQueueEntryVector(new JDFAttributeMap(AttributeName.STATUS, "Held"), null); Assert.AreEqual(500, v.Count); v = q.getQueueEntryVector(new JDFAttributeMap(AttributeName.STATUS, "Waiting"), null); Assert.AreEqual(400, v.Count); }