Source code for base.base_testing
#! /usr/bin/env python
"""
This script tests some of the base functionalities of MORSE.
"""
import sys
from morse.testing.testing import MorseTestCase
# Include this import to be able to use your test file as a regular
# builder script, ie, usable with: 'morse [run|exec] base_testing.py
try:
from morse.builder import *
except ImportError:
pass
[docs]class BaseTest(MorseTestCase):
[docs] def setUpEnv(self):
""" Defines the test scenario, using the Builder API.
"""
# Adding 4 robots
# no name provided, use the name of the associated variable
jido = Jido()
# use explicitly name provided
robot2 = ATRV('mana')
# setup the name using explicitly robot3.name
robot3 = ATRV()
robot3.name = 'dala'
# no name provided, use variable name, old school style
atrv = ATRV()
env = Environment('empty', fastmode = True)
[docs] def test_list_robots(self):
""" Tests the simulator can return the list of robots
This test is guaranteed to be started only when the simulator
is ready.
"""
# Initialize a socket connection to the simulator
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", 4000))
sockf = s.makefile()
# Queries for the list of robots
s.send(b"id1 simulation list_robots\n")
result = sockf.readline()
id, success, robots = result.strip().split(' ', 2)
self.assertEquals(success, "SUCCESS")
import ast
robotsset = set(ast.literal_eval(robots))
self.assertEquals(robotsset, {'jido', 'mana', 'dala', 'atrv'})
sockf.close()
s.close()
[docs] def test_socket_request_parser_resilience(self):
""" Tests that the socket request parser is resilient to
useless whitespaces.
"""
# Initialize a socket connection to the simulator
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", 4000))
sockf = s.makefile()
queries = [b"id1 simulation list_robots\n",
b"id1 simulation list_robots\n",
b"id1\tsimulation\tlist_robots\n",
b"id1 \t simulation \t list_robots\n",
b" id1 simulation list_robots \n"]
for q in queries:
s.send(q)
result = sockf.readline()
id, success, robots = result.strip().split(' ', 2)
self.assertEquals(success, "SUCCESS")
sockf.close()
s.close()
########################## Run these tests ##########################
if __name__ == "__main__":
from morse.testing.testing import main
main(BaseTest)