Exemplo n.º 1
0
    def handle(self):
        self.logger.debug("slim request handle started")
        self.wfile.write(b'Slim -- V0.3\n')

        running = True
        while running:
            instructionLength = int(self.rfile.read(6))
            self.rfile.read(1)
            instructions = self.rfile.read(instructionLength).decode('utf-8')
            self.logger.debug("len={} data={}".format(instructionLength,
                                                      instructions))

            if instructions == 'bye':
                self.logger.debug("'bye' received")
                running = False
            else:
                statements = ListDeserializer.deserialize(instructions)
                self.executor = ListExecutor()
                results = self.executor.execute(statements)
                x = ListSerializer.serialize(results)
                response = '%06d:%s' % (len(x), x)
                self.logger.debug("reponse={}".format(response))
                self.wfile.write(response.encode('utf-8'))

        self.logger.debug("server shutdown requested")
        self.server.done()
Exemplo n.º 2
0
class ListExecutorTest(unittest.TestCase):

    def setUp(self):
        self.executor = ListExecutor()
        self.statements = []
        self.expectedResults = []

    def testFoo(self):
        self.statements.append(["i1", "import", "xtest"])
	self.statements.append(["m1", "make", "testSlim", "TestSlim"])
        results = self.executor.execute(self.statements)
        print results

    def respondsWith(self, expected):
        self.expectedResults.extend(expected)
        result = self.executor.execute(self.statements)
        expectedMap = resultToMap(self.expectedResults)
        resultMap = resultToMap(result)
        self.assertEquals(expectedMap, resultMap)

    def assertExceptionReturned(self, message, returnTag):
        results = resultToMap(self.executor.execute(self.statements))
        result = results[returnTag]
        self.assert_(result.find(EXCEPTION_TAG) != -1)
        self.assert_(result.find(message) != -1)
Exemplo n.º 3
0
 def setUp(self):
     self.executor = ListExecutor()
     self.statements = []
     self.expectedResults = []
     self.statements.append(["i1", "import", "test"])
     self.statements.append(["m1", "make", "testSlim", "TestSlim"])
     self.expectedResults.append(["i1", "OK"])
     self.expectedResults.append(["m1", "OK"])
Exemplo n.º 4
0
 def handle(self):
     self.wfile.write('Slim -- V0.0\n')
     while True:
         instructionLength = int(self.rfile.read(6))
         self.rfile.read(1)
         instructions = self.rfile.read(instructionLength)
         if instructions == 'bye':
             return
         log('instructions {%s}' % instructions)
         statements = ListDeserializer.deserialize(instructions)
         self.executor = ListExecutor()
         results = self.executor.execute(statements)
         x = ListSerializer.serialize(results)
         log(x)
         self.wfile.write('%06d:%s' % (len(x), x))
Exemplo n.º 5
0
class SlimRequestHandler(socketserver.StreamRequestHandler):
    def __init__(self, request, client_address, server):
        self.logger = logging.getLogger('SlimRequestHandler')
        self.logger.debug('__init__')
        socketserver.StreamRequestHandler.__init__(self, request,
                                                   client_address, server)
        return

    def handle(self):
        self.logger.debug("slim request handle started")
        self.wfile.write(b'Slim -- V0.3\n')

        running = True
        while running:
            instructionLength = int(self.rfile.read(6))
            self.rfile.read(1)
            instructions = self.rfile.read(instructionLength).decode('utf-8')
            self.logger.debug("len={} data={}".format(instructionLength,
                                                      instructions))

            if instructions == 'bye':
                self.logger.debug("'bye' received")
                running = False
            else:
                statements = ListDeserializer.deserialize(instructions)
                self.executor = ListExecutor()
                results = self.executor.execute(statements)
                x = ListSerializer.serialize(results)
                response = '%06d:%s' % (len(x), x)
                self.logger.debug("reponse={}".format(response))
                self.wfile.write(response.encode('utf-8'))

        self.logger.debug("server shutdown requested")
        self.server.done()
Exemplo n.º 6
0
class SlimServer(Protocol):
    def __init__(self):
        log('init')

    def connectionMade(self):
        log('connectionMade')
        self.transport.write("Slim -- V0.0\n");

    def dataReceived(self, data):
        #log('dataReceived ' + data)
        try:
            self.file = FileAdapter(data)
            instructionLength = int(self.file.read(6))
            self.file.read(1)
            instructions = self.file.read(instructionLength)
            if instructions == 'bye':
                #self.transport.loseConnection()
                reactor.stop()
                return
            log('instructions {%s}' % instructions)
            statements = ListDeserializer.deserialize(instructions)
            self.executor = ListExecutor()
            results = self.executor.execute(statements)
            x = ListSerializer.serialize(results)
            log(x)
            self.transport.write('%06d:%s' % (len(x), x))
        except Exception, e:
            log(traceback.format_exc())
Exemplo n.º 7
0
 def setUp(self):
     self.executor = ListExecutor()
     self.statements = []
     self.expectedResults = []
     self.statements.append(["i1", "import", "fitnesse.slim.test"])
     self.statements.append(["m1", "make", "testSlim", "TestSlim"])
     self.expectedResults.append(["i1", "OK"])
     self.expectedResults.append(["m1", "OK"])
Exemplo n.º 8
0
 def handle(self):
     self.wfile.write('Slim -- V0.0\n')
     while True:
         instructionLength = int(self.rfile.read(6))
         self.rfile.read(1)
         instructions = self.rfile.read(instructionLength)
         if instructions == 'bye':
             return
         log('instructions {%s}' % instructions)
         statements = ListDeserializer.deserialize(instructions)
         self.executor = ListExecutor()
         results = self.executor.execute(statements)
         x = ListSerializer.serialize(results)
         log(x)
         self.wfile.write('%06d:%s' % (len(x), x))
Exemplo n.º 9
0
class ListExecutorTest(unittest.TestCase):
    def setUp(self):
        self.executor = ListExecutor()
        self.statements = []
        self.expectedResults = []

    def testFoo(self):
        self.statements.append(["i1", "import", "xtest"])
        self.statements.append(["m1", "make", "testSlim", "TestSlim"])
        results = self.executor.execute(self.statements)
        print results

    def respondsWith(self, expected):
        self.expectedResults.extend(expected)
        result = self.executor.execute(self.statements)
        expectedMap = resultToMap(self.expectedResults)
        resultMap = resultToMap(result)
        self.assertEquals(expectedMap, resultMap)

    def assertExceptionReturned(self, message, returnTag):
        results = resultToMap(self.executor.execute(self.statements))
        result = results[returnTag]
        self.assert_(result.find(EXCEPTION_TAG) != -1)
        self.assert_(result.find(message) != -1)
Exemplo n.º 10
0
class ListExecutorTest(unittest.TestCase):

    def setUp(self):
        self.executor = ListExecutor()
        self.statements = []
        self.expectedResults = []
        self.statements.append(["i1", "import", "fitnesse.slim.test"])
        self.statements.append(["m1", "make", "testSlim", "TestSlim"])
        self.expectedResults.append(["i1", "OK"])
        self.expectedResults.append(["m1", "OK"])

    def respondsWith(self, expected):
        self.expectedResults.extend(expected)
        result = self.executor.execute(self.statements)
        expectedMap = resultToMap(self.expectedResults)
        resultMap = resultToMap(result)
        self.assertEquals(expectedMap, resultMap)

    def testInvalidOperation(self):
        self.statements.append(["inv1", "invalidOperation"])
        self.assertExceptionReturned("message:<<INVALID_STATEMENT: invalidOperation.>>", "inv1")

    def testMalformedStatement(self):
        self.statements.append(["id", "call", "notEnoughArguments"])
        self.assertRaises(SlimError, self.assertExceptionReturned, "XX", "id")

    def assertExceptionReturned(self, message, returnTag):
        results = resultToMap(self.executor.execute(self.statements))
        result = results[returnTag]
        self.assert_(result.find(EXCEPTION_TAG) != -1)
        self.assert_(result.find(message) != -1)

    def testNoSuchInstance(self):
        self.statements.append(["id", "call", "noSuchInstance", "noSuchMethod"])
        self.assertExceptionReturned("message:<<NO_INSTANCE noSuchInstance.>>", "id")

    def testEmptyListReturnsNicely(self):
        self.executor.execute(self.statements)
        self.respondsWith([])
    '''

  public void createWithFullyQualifiedNameWorks() throws Exception {
    statements.clear();
    statements.add(list("m1", "make", "testSlim", "fitnesse.slim.test.TestSlim"));
    expectedResults.clear();
    respondsWith(list(list("m1", "OK")));
  }

  '''
    def testOneFunctionCall(self):
        self.statements.append(["id", "call", "testSlim", "returnString"])
        self.respondsWith([["id", "string"]])

    def testCanPassArgumentsToConstructor(self):
        self.statements.append(["m2", "make", "testSlim2", "TestSlim", "3"])
        self.statements.append(["c1", "call", "testSlim2", "returnConstructorArg"])
        self.statements.append(["c2", "call", "testSlim", "returnConstructorArg"])
        self.respondsWith(
            [
                ["m2", "OK"],
                ["c1", "3"],
                ["c2", "0"]])

    def testMultiFunctionCall(self):
        self.statements.append(["id1", "call", "testSlim", "addTo", "1", "2"])
        self.statements.append(["id2", "call", "testSlim", "addTo", "3", "4"])
        self.respondsWith([["id1", "3"], ["id2", "7"]])

    def testCallAndAssign(self):
        self.statements.append(["id1", "callAndAssign", "v", "testSlim", "addTo", "5", "6"])
        self.statements.append(["id2", "call", "testSlim", "echoInt", "$v"])
        self.respondsWith([["id1", "11"], ["id2", "11"]])

    def testCanReplaceMultipleVariablesInAnArgument(self):
        self.statements.append(["id1", "callAndAssign", "v1", "testSlim", "echoString", "Bob"])
        self.statements.append(["id2", "callAndAssign", "v2", "testSlim", "echoString", "Martin"])
        self.statements.append(["id3", "call", "testSlim", "echoString", "name: $v1 $v2"])
        self.respondsWith([["id1", "Bob"], ["id2", "Martin"], ["id3", "name: Bob Martin"]])

    '''
  public void passAndReturnList() throws Exception {
    List<String> l = list("one", "two");
    statements.add(list("id", "call", "testSlim", "echoList", l));
    respondsWith(list(list("id", l)));
  }
'''
    def testPassAndReturnListWithVariable(self):
        self.statements.append(["id1", "callAndAssign", "v", "testSlim", "addTo", "3", "4"])
        self.statements.append(["id2", "call", "testSlim", "echoList", ["$v"]])
        self.respondsWith([["id1", "7"], ["id2", ["7"]]])

    def testCallToVoidFunctionReturnsVoidValue(self):
        self.statements.append(["id", "call", "testSlim", "voidFunction"])
        #self.respondsWith([["id", VoidConverter.VOID_TAG]])

    def testCallToFunctionReturningNull(self):
        self.statements.append(["id", "call", "testSlim", "nullString"])
        self.respondsWith([["id", "None"]])
Exemplo n.º 11
0
class ListExecutorTest(unittest.TestCase):
    def setUp(self):
        self.executor = ListExecutor()
        self.statements = []
        self.expectedResults = []
        self.statements.append(["i1", "import", "test"])
        self.statements.append(["m1", "make", "testSlim", "TestSlim"])
        self.expectedResults.append(["i1", "OK"])
        self.expectedResults.append(["m1", "OK"])

    def respondsWith(self, expected):
        self.expectedResults.extend(expected)
        result = self.executor.execute(self.statements)
        expectedMap = resultToMap(self.expectedResults)
        resultMap = resultToMap(result)
        self.assertEquals(expectedMap, resultMap)

    def testInvalidOperation(self):
        self.statements.append(["inv1", "invalidOperation"])
        self.assertExceptionReturned(
            "message:<<INVALID_STATEMENT: invalidOperation.>>", "inv1")

    def testMalformedStatement(self):
        self.statements.append(["id", "call", "notEnoughArguments"])
        self.assertRaises(SlimError, self.assertExceptionReturned, "XX", "id")

    def assertExceptionReturned(self, message, returnTag):
        results = resultToMap(self.executor.execute(self.statements))
        result = results[returnTag]
        self.assert_(result.find(EXCEPTION_TAG) != -1)
        self.assert_(result.find(message) != -1)

    def testNoSuchInstance(self):
        self.statements.append(
            ["id", "call", "noSuchInstance", "noSuchMethod"])
        self.assertExceptionReturned("message:<<NO_INSTANCE noSuchInstance.>>",
                                     "id")

    def testEmptyListReturnsNicely(self):
        self.executor.execute(self.statements)
        self.respondsWith([])

    '''

  public void createWithFullyQualifiedNameWorks() throws Exception {
    statements.clear();
    statements.add(list("m1", "make", "testSlim", "test.TestSlim"));
    expectedResults.clear();
    respondsWith(list(list("m1", "OK")));
  }

  '''

    def testOneFunctionCall(self):
        self.statements.append(["id", "call", "testSlim", "returnString"])
        self.respondsWith([["id", "string"]])

    def testCanPassArgumentsToConstructor(self):
        self.statements.append(["m2", "make", "testSlim2", "TestSlim", "3"])
        self.statements.append(
            ["c1", "call", "testSlim2", "returnConstructorArg"])
        self.statements.append(
            ["c2", "call", "testSlim", "returnConstructorArg"])
        self.respondsWith([["m2", "OK"], ["c1", "3"], ["c2", "0"]])

    def testMultiFunctionCall(self):
        self.statements.append(["id1", "call", "testSlim", "addTo", "1", "2"])
        self.statements.append(["id2", "call", "testSlim", "addTo", "3", "4"])
        self.respondsWith([["id1", "3"], ["id2", "7"]])

    def testCallAndAssign(self):
        self.statements.append(
            ["id1", "callAndAssign", "v", "testSlim", "addTo", "5", "6"])
        self.statements.append(["id2", "call", "testSlim", "echoInt", "$v"])
        self.respondsWith([["id1", "11"], ["id2", "11"]])

    def testCanReplaceMultipleVariablesInAnArgument(self):
        self.statements.append(
            ["id1", "callAndAssign", "v1", "testSlim", "echoString", "Bob"])
        self.statements.append(
            ["id2", "callAndAssign", "v2", "testSlim", "echoString", "Martin"])
        self.statements.append(
            ["id3", "call", "testSlim", "echoString", "name: $v1 $v2"])
        self.respondsWith([["id1", "Bob"], ["id2", "Martin"],
                           ["id3", "name: Bob Martin"]])

    '''
  public void passAndReturnList() throws Exception {
    List<String> l = list("one", "two");
    statements.add(list("id", "call", "testSlim", "echoList", l));
    respondsWith(list(list("id", l)));
  }
'''

    def testPassAndReturnListWithVariable(self):
        self.statements.append(
            ["id1", "callAndAssign", "v", "testSlim", "addTo", "3", "4"])
        self.statements.append(["id2", "call", "testSlim", "echoList", ["$v"]])
        self.respondsWith([["id1", "7"], ["id2", ["7"]]])

    def testCallToVoidFunctionReturnsVoidValue(self):
        self.statements.append(["id", "call", "testSlim", "voidFunction"])
        #self.respondsWith([["id", VoidConverter.VOID_TAG]])

    def testCallToFunctionReturningNull(self):
        self.statements.append(["id", "call", "testSlim", "nullString"])
        self.respondsWith([["id", "None"]])
Exemplo n.º 12
0
 def setUp(self):
     self.executor = ListExecutor()
     self.statements = []
     self.expectedResults = []
Exemplo n.º 13
0
 def setUp(self):
     self.executor = ListExecutor()
     self.statements = []
     self.expectedResults = []