|
I have a test set up where a client application writes to a data queue (inQueue) and reads from another one (outQueue). I have written server applications in both Java and Cobol (included). I have the java client reporting the difference between System.currentTimeMillis(); at the start and at the end of each transactions. I expect some variance in elapsed time reported. The issue here is that the variance in elapsed time is wide. I get millisecond reports varying from less than one millisecond all the way up the low 2000 millisecond range. Why would/how could the elapsed times for the transaction vary so much? These programs caps the number of transactions at 1000. The connections are closed from the client. The data being written and read in each case does not change. Need help... Cobol Code: ID DIVISION. PROGRAM-ID. TESTDQ. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-AS400. OBJECT-COMPUTER. IBM-AS400. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. * COPY QUSEC OF QSYSINC-QLIBSRC. * COPY QCAPCMD OF QSYSINC-QLIBSRC. 01 IN-QUEUE-NAME PIC X(10) VALUE "TESTINDQ". 01 QUEUE-LIB-NAME PIC X(10) VALUE "FOO". 01 OUT-QUEUE-NAME PIC X(10) VALUE "TESTOUTDQ". 01 WAIT-TIME PIC S9(05) VALUE -1 PACKED-DECIMAL. 01 MSG-SIZE PIC S9(05) VALUE 50 PACKED-DECIMAL. 01 REQUEST PIC X(50). 01 RESPONSE PIC X(50) VALUE "This is the response". 01 INCREMENT PIC S9(01) VALUE 1 PACKED-DECIMAL. 01 REQUEST-NUM PIC S9(05) VALUE 1 PACKED-DECIMAL. 01 START-TIME PIC S9(05). 01 END-TIME PIC S9(05). PROCEDURE DIVISION. MAIN. CALL "QRCVDTAQ" USING IN-QUEUE-NAME, QUEUE-LIB-NAME, MSG-SIZE, REQUEST, WAIT-TIME. CALL "QSNDDTAQ" USING OUT-QUEUE-NAME, QUEUE-LIB-NAME, MSG-SIZE, RESPONSE. ADD INCREMENT TO REQUEST-NUM. IF REQUEST-NUM = 1000 STOP RUN. PERFORM MAIN. Test Client Application Code: package com.critrade.sandbox; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.util.Properties; import junit.framework.TestCase; import com.ibm.as400.access.AS400; import com.ibm.as400.access.DataQueue; import com.ibm.as400.access.DataQueueAttributes; import com.ibm.as400.access.DataQueueEntry; import com.ibm.as400.access.QSYSObjectPathName; /** * @author TimG * */ public class TestDTAQClient extends TestCase { static final int WAIT_TIME = -1; DataQueue inQueue = null; DataQueue outQueue = null; AS400 host = null; QSYSObjectPathName inQueuePath = null; QSYSObjectPathName outQueuePath = null; Connection con = null; CallableStatement cs = null; String entry = "new test entry - new test entry - new test entry"; public TestDTAQClient(String myName) { super(myName); } public static void main(String[] args) { junit.textui.TestRunner.run(new TestDTAQClient("testTransaction")); } protected void setUp() throws Exception { System.out.println("Establishing Database Connection"); host = new AS400("128.128.2.220", "foo", "bar"); DataQueueAttributes dtaqAttrib = new DataQueueAttributes(); try { inQueuePath = new QSYSObjectPathName("foo", "testindq", "dtaq"); inQueue = new DataQueue(host, inQueuePath.getPath()); if(!inQueue.exists()) inQueue.create(dtaqAttrib); } catch (Exception e) { e.printStackTrace(); } try { outQueuePath = new QSYSObjectPathName("foo", "testoutdq", "dtaq"); outQueue = new DataQueue(host, outQueuePath.getPath()); if(!outQueue.exists()) outQueue.create(dtaqAttrib); } catch(Exception e) { e.printStackTrace(); } } protected void tearDown() { try { if(con!=null){con.close();} } catch (Exception ex) { System.out.println(ex.getMessage()); } } public void testInQueueWrite() { try { inQueue.write(entry); } catch (Exception e) { e.printStackTrace(); } } public void testOutQueueRead() { try { DataQueueEntry entry = outQueue.read(WAIT_TIME); } catch (Exception e) { e.printStackTrace(); } } public void testTransaction() { for(int i = 0; i < 1000; i++) { long start = System.currentTimeMillis(); testInQueueWrite(); testOutQueueRead(); long end = System.currentTimeMillis(); System.out.println("" + (end - start)); } } } --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.642 / Virus Database: 410 - Release Date: 3/24/2004
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.