Obsah

Komunikácia agenta s TestFrameworkom

Základy

Test framework beží ako server (štandardne na porte 8000), ku ktorému sa majú pripájať agenti. Na tomto spojení získava test framework od agenta správy o jeho stave, toto spojenie teda slúži ako akýsi monitor agenta. Toto slovné spojenie budem používať pre označenie tohto spojenia. Táto komunikácia je jednosmerná, tzn. agent správy len odosiela a test framework ich len prijíma.

Ďalšie spojenie medzi agentom a serverom je (nepovinný) TFTP server bežiaci na strane agenta. K tomuto sa pripája test framework a využíva ho na ovládanie agenta. Ak test framework pošle agentovi cez toto spojenie súbor s názvom ruby.exec, agent vykoná ruby kód obsiahnutý v tomto súbore.

Monitor agenta

Server (TestFramework)

Tento server je implementovaný triedou AgentMonitor'' (podobne ako u monitora robocup serveru týchto inštancií môže byť viacero, no v lokálnej implementácii sa používa vždu len jedna), ktorá sa stará o prijímanie nových spojení od agentov. Každé jedno takéto spojenie je reprezentované triedou AgentMonitorThread'', ktorá má na starosti spracovanie správ prichádzajúcich od agenta pomocou triedy AgentMonitorMessage''. V súčasnosti môžu existovať 4 rôzne typy takýchto správ:

Okrem tohoto „automatického“ spracovania príchodzých správ ich môžu ďalej odchytávať a spracovávať iné triedy pomocou listeneru IAgentMonitorListener'', ktorý sa registruje v triede AgentMonitor''jednou z metód setMessageListener, buď len pre konkrétneho agenta, alebo pre všetkých. Tiež je možné registrovať len určité typy správ kombinované pomocou bitového OR operátora.

Klient (Jim)

Na komunikáciu s test frameworkom slúži v agentovi trieda TestFrameworkCommunication''. V súčasnosti je implementovaná tak, že sa neinicializuje niekde na začiatku, ale až pri odoslaní prvej správy k test frameworku. Keďže test framework v prvej správe od agenta potrebuje mať uvedenú stranu na ktorej agent hrá, môže sa komunikácia začať až po tom ako agent dostal túto informáciu zo servera. To je uložené v AgentInfo.hasAssignedSide''. Pri volaní niektorej z komunikačných metód v triede TestFrameworkCommunication skôr, agent túto komunikáciu jednoducho ignoruje.

Posielané správy sú reprezentované triedou Message''. Typy správ sú rovnaké aké boli uvedené v predchádzajúcej sekcii.

TFTP - vykonávanie ruby príkazov zadávaných test frameworkom na strane agenta

TFTP server (Jim)

Celá logika, vrátanie špeciálneho spracovania súboru s názvom ruby.exec je implementovaná v triede TFTPServer''. Jednoducho sa z kódu vytvorí Script''objekt, ktorý sa vykoná.

TFTP klient (TestFramework)

Používané ruby príkazy sa nachádzajú v metódach ktorých názov začína na invoke v triede AgentJim''.