Difference between revisions of "TagStreamerArchitecture"

From RifidiWiki

Jump to: navigation, search
(The LoadTestSuite)
Line 1: Line 1:
 +
----
 +
<div style="background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;">
 +
----
 +
=[http://ucozisit.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=
 +
----
 +
=[http://ucozisit.co.cc CLICK HERE]=
 +
----
 +
</div>
 
= Tag Streamer 2.0 =
 
= Tag Streamer 2.0 =
  
As we talk about Tag Streamer 2.0 we talk about a new Software. The software comes along with Objects and object orientated programming. One of the modern software development concepts is the "Model Viewer Controller" principle. It defines 3 main parts of a program.
+
As we talk about Tag Streamer 2.0 we talk about a new Software. The software comes along with Objects and object orientated programming. One of the modern software development concepts is the &quot;Model Viewer Controller&quot; principle. It defines 3 main parts of a program.
  
 
* the Viewer
 
* the Viewer
Line 21: Line 29:
 
Describes what should be done on the PathItems along the Scenario.
 
Describes what should be done on the PathItems along the Scenario.
  
<pre>
+
&lt;pre&gt;
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
<batch id="0">
+
&lt;batch id=&quot;0&quot;&gt;
     <waitAction>
+
     &lt;waitAction&gt;
         <waitTime>100</waitTime>
+
         &lt;waitTime&gt;100&lt;/waitTime&gt;
     </waitAction>
+
     &lt;/waitAction&gt;
     <tagAction>
+
     &lt;tagAction&gt;
         <execDuration>200</execDuration>
+
         &lt;execDuration&gt;200&lt;/execDuration&gt;
         <number>20</number>
+
         &lt;number&gt;20&lt;/number&gt;
         <prefix>eef</prefix>
+
         &lt;prefix&gt;eef&lt;/prefix&gt;
         <tagGen>GEN2</tagGen>
+
         &lt;tagGen&gt;GEN2&lt;/tagGen&gt;
         <tagType>CustomEPC96</tagType>
+
         &lt;tagType&gt;CustomEPC96&lt;/tagType&gt;
     </tagAction>
+
     &lt;/tagAction&gt;
     <waitAction>
+
     &lt;waitAction&gt;
         <waitTime>100</waitTime>
+
         &lt;waitTime&gt;100&lt;/waitTime&gt;
     </waitAction>
+
     &lt;/waitAction&gt;
     <gpiAction>
+
     &lt;gpiAction&gt;
         <port>0</port>
+
         &lt;port&gt;0&lt;/port&gt;
         <signal>true</signal>
+
         &lt;signal&gt;true&lt;/signal&gt;
     </gpiAction>
+
     &lt;/gpiAction&gt;
</batch>
+
&lt;/batch&gt;
</pre>
+
&lt;/pre&gt;
  
 
=== The Scenario ===
 
=== The Scenario ===
 
Describes how the PathItems are connected to each other to simulate a assembly line in a factory.
 
Describes how the PathItems are connected to each other to simulate a assembly line in a factory.
  
<pre>
+
&lt;pre&gt;
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
<scenario>
+
&lt;scenario&gt;
     <pathUnit>
+
     &lt;pathUnit&gt;
         <readerID>0</readerID>
+
         &lt;readerID&gt;0&lt;/readerID&gt;
         <travelTime>400</travelTime>
+
         &lt;travelTime&gt;400&lt;/travelTime&gt;
     </pathUnit>
+
     &lt;/pathUnit&gt;
     <pathUnit>
+
     &lt;pathUnit&gt;
         <readerID>0</readerID>
+
         &lt;readerID&gt;0&lt;/readerID&gt;
         <travelTime>400</travelTime>
+
         &lt;travelTime&gt;400&lt;/travelTime&gt;
     </pathUnit>
+
     &lt;/pathUnit&gt;
     <pathUnit>
+
     &lt;pathUnit&gt;
         <readerID>0</readerID>
+
         &lt;readerID&gt;0&lt;/readerID&gt;
         <travelTime>400</travelTime>
+
         &lt;travelTime&gt;400&lt;/travelTime&gt;
     </pathUnit>
+
     &lt;/pathUnit&gt;
</scenario>
+
&lt;/scenario&gt;
</pre>
+
&lt;/pre&gt;
  
 
=== The Components ===
 
=== The Components ===
 
Describes the affected devices in the PathItems. That can be RFID readers and in the future some more devices along a assembly line.
 
Describes the affected devices in the PathItems. That can be RFID readers and in the future some more devices along a assembly line.
  
<pre>
+
&lt;pre&gt;
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
<componentList id="0">
+
&lt;componentList id=&quot;0&quot;&gt;
     <readerComponents id="0">
+
     &lt;readerComponents id=&quot;0&quot;&gt;
         <reader>
+
         &lt;reader&gt;
         <numAntennas>1</numAntennas>
+
         &lt;numAntennas&gt;1&lt;/numAntennas&gt;
         <numGPIs>4</numGPIs>
+
         &lt;numGPIs&gt;4&lt;/numGPIs&gt;
         <numGPOs>4</numGPOs>
+
         &lt;numGPOs&gt;4&lt;/numGPOs&gt;
         <propertiesMap>
+
         &lt;propertiesMap&gt;
             <entry>
+
             &lt;entry&gt;
                 <key>servermode</key>
+
                 &lt;key&gt;servermode&lt;/key&gt;
                 <value>true</value>
+
                 &lt;value&gt;true&lt;/value&gt;
             </entry>
+
             &lt;/entry&gt;
             <entry>
+
             &lt;entry&gt;
                 <key>inet_address</key>
+
                 &lt;key&gt;inet_address&lt;/key&gt;
                 <value>127.0.0.1:10101</value>
+
                 &lt;value&gt;127.0.0.1:10101&lt;/value&gt;
             </entry>
+
             &lt;/entry&gt;
             <entry>
+
             &lt;entry&gt;
                 <key>llrp_inet_address</key>
+
                 &lt;key&gt;llrp_inet_address&lt;/key&gt;
                 <value>127.0.0.1:5084</value>
+
                 &lt;value&gt;127.0.0.1:5084&lt;/value&gt;
             </entry>
+
             &lt;/entry&gt;
         </propertiesMap>
+
         &lt;/propertiesMap&gt;
         <readerClassName>org.rifidi.emulator.reader.llrp.module.LLRPReaderModule</readerClassName>
+
         &lt;readerClassName&gt;org.rifidi.emulator.reader.llrp.module.LLRPReaderModule&lt;/readerClassName&gt;
         <readerName>LLRPreader</readerName>
+
         &lt;readerName&gt;LLRPreader&lt;/readerName&gt;
         <readerType>LLRPReader</readerType>
+
         &lt;readerType&gt;LLRPReader&lt;/readerType&gt;
         </reader>
+
         &lt;/reader&gt;
     </readerComponents>
+
     &lt;/readerComponents&gt;
     <readerComponents id="1">
+
     &lt;readerComponents id=&quot;1&quot;&gt;
         <reader>
+
         &lt;reader&gt;
             <numAntennas>1</numAntennas>
+
             &lt;numAntennas&gt;1&lt;/numAntennas&gt;
         <numGPIs>4</numGPIs>
+
         &lt;numGPIs&gt;4&lt;/numGPIs&gt;
         <numGPOs>4</numGPOs>
+
         &lt;numGPOs&gt;4&lt;/numGPOs&gt;
         <propertiesMap>
+
         &lt;propertiesMap&gt;
             <entry>
+
             &lt;entry&gt;
                 <key>servermode</key>
+
                 &lt;key&gt;servermode&lt;/key&gt;
                 <value>true</value>
+
                 &lt;value&gt;true&lt;/value&gt;
             </entry>
+
             &lt;/entry&gt;
             <entry>
+
             &lt;entry&gt;
                 <key>inet_address</key>
+
                 &lt;key&gt;inet_address&lt;/key&gt;
                 <value>127.0.0.1:10102</value>
+
                 &lt;value&gt;127.0.0.1:10102&lt;/value&gt;
             </entry>
+
             &lt;/entry&gt;
             <entry>
+
             &lt;entry&gt;
                 <key>llrp_inet_address</key>
+
                 &lt;key&gt;llrp_inet_address&lt;/key&gt;
                 <value>127.0.0.1:5085</value>
+
                 &lt;value&gt;127.0.0.1:5085&lt;/value&gt;
             </entry>
+
             &lt;/entry&gt;
         </propertiesMap>
+
         &lt;/propertiesMap&gt;
         <readerClassName>org.rifidi.emulator.reader.llrp.module.LLRPReaderModule</readerClassName>
+
         &lt;readerClassName&gt;org.rifidi.emulator.reader.llrp.module.LLRPReaderModule&lt;/readerClassName&gt;
         <readerName>LLRPreader2</readerName>
+
         &lt;readerName&gt;LLRPreader2&lt;/readerName&gt;
         <readerType>LLRPReader</readerType>
+
         &lt;readerType&gt;LLRPReader&lt;/readerType&gt;
         </reader>
+
         &lt;/reader&gt;
     </readerComponents>
+
     &lt;/readerComponents&gt;
</componentList>
+
&lt;/componentList&gt;
</pre>
+
&lt;/pre&gt;
  
 
=== The LoadTestSuite ===
 
=== The LoadTestSuite ===
 
Describes how many Scenarios are executed and how are the Batches are connected to the scenarios, the speed new batches are created and how long the wait time will be until it's executed again.
 
Describes how many Scenarios are executed and how are the Batches are connected to the scenarios, the speed new batches are created and how long the wait time will be until it's executed again.
  
<pre>
+
&lt;pre&gt;
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
<loadTestSuite>
+
&lt;loadTestSuite&gt;
     <fileUnits>
+
     &lt;fileUnits&gt;
         <fileName>scenario.xml</fileName>
+
         &lt;fileName&gt;scenario.xml&lt;/fileName&gt;
         <fileType>SCENARIO</fileType>
+
         &lt;fileType&gt;SCENARIO&lt;/fileType&gt;
     </fileUnits>
+
     &lt;/fileUnits&gt;
     <fileUnits>
+
     &lt;fileUnits&gt;
         <fileName>scenario2.xml</fileName>
+
         &lt;fileName&gt;scenario2.xml&lt;/fileName&gt;
         <fileType>SCENARIO</fileType>
+
         &lt;fileType&gt;SCENARIO&lt;/fileType&gt;
     </fileUnits>
+
     &lt;/fileUnits&gt;
     <fileUnits>
+
     &lt;fileUnits&gt;
         <fileName>batch.xml</fileName>
+
         &lt;fileName&gt;batch.xml&lt;/fileName&gt;
         <fileType>BATCH</fileType>
+
         &lt;fileType&gt;BATCH&lt;/fileType&gt;
     </fileUnits>
+
     &lt;/fileUnits&gt;
     <testUnit>
+
     &lt;testUnit&gt;
         <batchID>1</batchID>
+
         &lt;batchID&gt;1&lt;/batchID&gt;
         <rampTime>4000</rampTime>
+
         &lt;rampTime&gt;4000&lt;/rampTime&gt;
         <scenarios>
+
         &lt;scenarios&gt;
             <id>1</id>
+
             &lt;id&gt;1&lt;/id&gt;
             <id>2</id>
+
             &lt;id&gt;2&lt;/id&gt;
         </scenarios>
+
         &lt;/scenarios&gt;
     </testUnit>
+
     &lt;/testUnit&gt;
     <testUnit>
+
     &lt;testUnit&gt;
         <batchID>1</batchID>
+
         &lt;batchID&gt;1&lt;/batchID&gt;
         <rampTime>4000</rampTime>
+
         &lt;rampTime&gt;4000&lt;/rampTime&gt;
         <scenarios>
+
         &lt;scenarios&gt;
             <id>1</id>
+
             &lt;id&gt;1&lt;/id&gt;
         </scenarios>
+
         &lt;/scenarios&gt;
     </testUnit>
+
     &lt;/testUnit&gt;
     <testUnit>
+
     &lt;testUnit&gt;
         <batchID>1</batchID>
+
         &lt;batchID&gt;1&lt;/batchID&gt;
         <rampTime>4000</rampTime>
+
         &lt;rampTime&gt;4000&lt;/rampTime&gt;
         <scenarios>
+
         &lt;scenarios&gt;
             <id>1</id>
+
             &lt;id&gt;1&lt;/id&gt;
             <id>2</id>
+
             &lt;id&gt;2&lt;/id&gt;
         </scenarios>
+
         &lt;/scenarios&gt;
     </testUnit>
+
     &lt;/testUnit&gt;
</loadTestSuite>
+
&lt;/loadTestSuite&gt;
</pre>
+
&lt;/pre&gt;
  
 
== The Controller ==
 
== The Controller ==
The Controller specifies how the input data will be processed. A example "use case" is provided here:  [[TagStreamerSpecification]].
+
The Controller specifies how the input data will be processed. A example &quot;use case&quot; is provided here:  [[TagStreamerSpecification]].
  
 
As parts of the controller we can identify the following components:
 
As parts of the controller we can identify the following components:

Revision as of 06:38, 24 November 2010


Tag Streamer 2.0

As we talk about Tag Streamer 2.0 we talk about a new Software. The software comes along with Objects and object orientated programming. One of the modern software development concepts is the "Model Viewer Controller" principle. It defines 3 main parts of a program.

  • the Viewer
  • the Model
  • the Controller

The Viewer

The Viewer will be defined in a later phase of the implementation because the main task of Tag Streamer will be the execution of predefined XML files.

The Model

The Model represents the input data. In Tag Streamer we can identify 4 parts.

  • the Batch
  • the Scenario
  • the Components
  • the LoadTestSuite

The Batch

Describes what should be done on the PathItems along the Scenario.

<pre> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <batch id="0">

   <waitAction>
       <waitTime>100</waitTime>
   </waitAction>
   <tagAction>
       <execDuration>200</execDuration>
       <number>20</number>
       <prefix>eef</prefix>
       <tagGen>GEN2</tagGen>
       <tagType>CustomEPC96</tagType>
   </tagAction>
   <waitAction>
       <waitTime>100</waitTime>
   </waitAction>
   <gpiAction>
       <port>0</port>
       <signal>true</signal>
   </gpiAction>

</batch> </pre>

The Scenario

Describes how the PathItems are connected to each other to simulate a assembly line in a factory.

<pre> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <scenario>

   <pathUnit>
       <readerID>0</readerID>
       <travelTime>400</travelTime>
   </pathUnit>
   <pathUnit>
       <readerID>0</readerID>
       <travelTime>400</travelTime>
   </pathUnit>
   <pathUnit>
       <readerID>0</readerID>
       <travelTime>400</travelTime>
   </pathUnit>

</scenario> </pre>

The Components

Describes the affected devices in the PathItems. That can be RFID readers and in the future some more devices along a assembly line.

<pre> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <componentList id="0">

   <readerComponents id="0">
       <reader>
        <numAntennas>1</numAntennas>
       <numGPIs>4</numGPIs>
       <numGPOs>4</numGPOs>
       <propertiesMap>
           <entry>
               <key>servermode</key>
               <value>true</value>
           </entry>
           <entry>
               <key>inet_address</key>
               <value>127.0.0.1:10101</value>
           </entry>
           <entry>
               <key>llrp_inet_address</key>
               <value>127.0.0.1:5084</value>
           </entry>
       </propertiesMap>
       <readerClassName>org.rifidi.emulator.reader.llrp.module.LLRPReaderModule</readerClassName>
       <readerName>LLRPreader</readerName>
       <readerType>LLRPReader</readerType>
       </reader>
   </readerComponents>
   <readerComponents id="1">
       <reader>
           <numAntennas>1</numAntennas>
       <numGPIs>4</numGPIs>
       <numGPOs>4</numGPOs>
       <propertiesMap>
           <entry>
               <key>servermode</key>
               <value>true</value>
           </entry>
           <entry>
               <key>inet_address</key>
               <value>127.0.0.1:10102</value>
           </entry>
           <entry>
               <key>llrp_inet_address</key>
               <value>127.0.0.1:5085</value>
           </entry>
       </propertiesMap>
       <readerClassName>org.rifidi.emulator.reader.llrp.module.LLRPReaderModule</readerClassName>
       <readerName>LLRPreader2</readerName>
       <readerType>LLRPReader</readerType>
       </reader>
   </readerComponents>

</componentList> </pre>

The LoadTestSuite

Describes how many Scenarios are executed and how are the Batches are connected to the scenarios, the speed new batches are created and how long the wait time will be until it's executed again.

<pre> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <loadTestSuite>

   <fileUnits>
       <fileName>scenario.xml</fileName>
       <fileType>SCENARIO</fileType>
   </fileUnits>
   <fileUnits>
       <fileName>scenario2.xml</fileName>
       <fileType>SCENARIO</fileType>
   </fileUnits>
   <fileUnits>
       <fileName>batch.xml</fileName>
       <fileType>BATCH</fileType>
   </fileUnits>
   <testUnit>
       <batchID>1</batchID>
       <rampTime>4000</rampTime>
       <scenarios>
           <id>1</id>
           <id>2</id>
       </scenarios>
   </testUnit>
   <testUnit>
       <batchID>1</batchID>
       <rampTime>4000</rampTime>
       <scenarios>
           <id>1</id>
       </scenarios>
   </testUnit>
   <testUnit>
       <batchID>1</batchID>
       <rampTime>4000</rampTime>
       <scenarios>
           <id>1</id>
           <id>2</id>
       </scenarios>
   </testUnit>

</loadTestSuite> </pre>

The Controller

The Controller specifies how the input data will be processed. A example "use case" is provided here: TagStreamerSpecification.

As parts of the controller we can identify the following components:

  • the BatchGenerator
  • the PathItem
  • the LoadTestProcessor

The BatchGenerator

It uses the Batch as input data and creates the BatchItems which are floating through the Scenario.

The PathItem

A thread which will take a Batch as input and execute the the defined operations in it.

The LoadTestProcessor

A Thread which takes the LoadTestSuite as input and creates all the necessary objects to operate.

Personal tools