Thread: SF.net SVN: fclient: [90] trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py
Status: Pre-Alpha
Brought to you by:
jurner
From: <ju...@us...> - 2008-01-30 13:23:25
|
Revision: 90 http://fclient.svn.sourceforge.net/fclient/?rev=90&view=rev Author: jurner Date: 2008-01-30 05:23:25 -0800 (Wed, 30 Jan 2008) Log Message: ----------- fix Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-01-30 13:22:48 UTC (rev 89) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-01-30 13:23:25 UTC (rev 90) @@ -679,7 +679,7 @@ # respond with a ProtocolError self.socket.setResponseMessage( 'ProtocolError', - Code='25', # DDADenied + Code=25, # DDADenied Identifier=msg['Identifier'], ExtraDescription='An error occured', Fatal='false', @@ -692,7 +692,7 @@ self.failIf(msg is None) self.assertEqual(msg.name, self.fcpClient.Message.MessageTestDDARequest) self.assertEqual(msg['Directory'], DIR) - self.assertEqual(msg['WantWriteDirectory'], 'true') + self.failIf(not msg['WantWriteDirectory']) # respond with a TestDDAReply message This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-02 18:27:37
|
Revision: 118 http://fclient.svn.sourceforge.net/fclient/?rev=118&view=rev Author: jurner Date: 2008-02-02 10:27:42 -0800 (Sat, 02 Feb 2008) Log Message: ----------- refactore unittests Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-02 18:27:21 UTC (rev 117) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-02 18:27:42 UTC (rev 118) @@ -18,6 +18,7 @@ import fcp2_0_client from fcp2_0_client import FcpClient +import fcp2_0_consts as consts sys.path.pop(0) @@ -32,7 +33,8 @@ #*********************************************************************************** # #*********************************************************************************** -class TestFcpClient(unittest.TestCase): +class BaseTestClient(unittest.TestCase): + """Base class that does not connect to FcpClient prior to each test""" def __init__(self, *args, **kwargs): @@ -52,8 +54,8 @@ self.events = [] # events received from the client self.messages = [] # messages the client sent self.tmpfiles = [] # temp files used for testing (will be removed on tearDown) - - def _captureBytesFromClient(self, bytes): + + def _captureMessagesFromClient(self, bytes): s = DummySocket() s.setResponse(bytes) self.messages.append(self.fcpClient.Message.fromSocket(s)) @@ -62,17 +64,21 @@ self.events.append( (event, msg) ) def connectClient(self): + """Connects to the client""" + enum = self.fcpClient.connect(duration=0.2, timeout=0.1) msg = enum.next() self.failIf(msg is not None) - self.socket.setResponseMessage( + #NOTE: have to send directly via socket here (our sendResponseMessage + # calls client.next() autkmatically) + self.socket.sendResponseMessage( 'NodeHello', FCPVersion='2.0', Node='Fred', - Version='???', - Revision='???', - Build='???', - ExRevision='???', + Version=str(self.fcpClient.ExpectedFcpVersion), + Revision='99999999', + Build='999999', + ExRevision='999999', Testnet='false', CompressionCodecs='1', ConnectionIdentifier='any', @@ -81,32 +87,115 @@ msg = enum.next() self.messages.pop(0) self.events.pop(0) + + + def assertHasNextEvent(self, + expectedEvent=None, + messageName=None, + param1=None, + param2=None, + param3=None, + param4=None, + param5=None, + data=None + ): + """Tests if we received a certain event from the client + @param expectedEvent: the event expected or None if no event is expected + @param messageName: expected mesageName or None if no message is expected + @param param1: tuple(paramName, value) of a message parameter expected + @param data: data expected along with the message or None + @return: message if a message was received or None + """ + if expectedEvent is None: + self.failIf(self.events) + else: + self.failUnless(self.events) + event, msg = self.events.pop(0) + self.assertEqual(event, expectedEvent) + + if messageName is not None: + self.assertEqual(msg.name, messageName) + if param1 is not None: + param1, value1 = param1 + self.failUnless(param1 in msg.params) + self.assertEqual(value1, msg[param1]) + if param2 is not None: + param2, value2 = param2 + self.failUnless(param2 in msg.params) + self.assertEqual(value2, msg[param2]) + if param3 is not None: + param3, value3 = param3 + self.failUnless(param3 in msg.params) + self.assertEqual(value3, msg[param3]) + if param4 is not None: + param4, value4 = param4 + self.failUnless(param4 in msg.params) + self.assertEqual(value4, msg[param4]) + if param5 is not None: + param5, value5 = param5 + self.failUnless(param5 in msg.params) + self.assertEqual(value5, msg[param5]) + + if data is not None: + self.assertEqual(data, msg.data) + + return msg + + def assertHasNextMessage(self, + messageName, + param1=None, + param2=None, + param3=None, + param4=None, + param5=None, + data=None + ): + """Tests if we received a certain message from the client + @param messageName: expected mesageName or None if no message is expected + @param param1: tuple(paramName, value) of a message parameter expected + @param data: data expected along with the message or None + + @return: message if a message was received or None + """ + if messageName is None: + self.failIf(self.messages) + else: + msg = self.messages.pop(0) + self.assertEqual(msg.name, messageName) + if param1 is not None: + param1, value1 = param1 + self.failUnless(param1 in msg.params) + self.assertEqual(value1, msg[param1]) + if param2 is not None: + param2, value2 = param2 + self.failUnless(param2 in msg.params) + self.assertEqual(value2, msg[param2]) + if param3 is not None: + param3, value3 = param3 + self.failUnless(param3 in msg.params) + self.assertEqual(value3, msg[param3]) + if param4 is not None: + param4, value4 = param4 + self.failUnless(param4 in msg.params) + self.assertEqual(value4, msg[param4]) + if param5 is not None: + param5, value5 = param5 + self.failUnless(param5 in msg.params) + self.assertEqual(value5, msg[param5]) + + if data is not None: + self.assertEqual(data, msg.data) + return msg + - def nextMessage(self): - """Returns the next message the client send or None""" - if self.messages: - return self.messages.pop(0) - return None + def sendResponseMessage(self, messageName, data=None, **params): + """Posts a message to the client""" + self.socket.sendResponseMessage(messageName, data=data, **params) + self.fcpClient.next() - def nextEvent(self): - """Returns the next tuple(event, message) the client triggered or (None, None)""" - if self.events: - return self.events.pop(0) - return (None, None) - - def hasNextEvent(self): - return bool(self.events) - - def hasNextMessage(self): - return bool(self.messages) - - - - ##################################################### - ## - ##################################################### + def setUp(self): self.oldSocketModule = fcp2_0_client.socket fcp2_0_client.socket = self.socketModule @@ -121,7 +210,7 @@ # capture all messages the client sent self.messages = [] # messages the client send - self.socket.setBytesReceiver(self._captureBytesFromClient) + self.socket.setBytesReceiver(self._captureMessagesFromClient) @@ -135,22 +224,37 @@ # clean up tmpfiles for fpath in self.tmpfiles: os.remove(fpath) + +#*********************************************************************************** +# +#*********************************************************************************** +class BaseTestConnectedClient(BaseTestClient): + """Base class that automatically connects to FcpClient prior to each test""" + def setUp(self): + BaseTestClient.setUp(self) + self.connectClient() - ####################################################### - ## - ## connect() test cases - ## - ####################################################### + +#*********************************************************************************** +# +#*********************************************************************************** +#TODO: class Test.... set/getDebugVerbosity / connectionName and friends... (BaseTestConnectedClient): + +#*********************************************************************************** +# +#*********************************************************************************** +class TestConnect(BaseTestClient): + + def testClose(self): - self.failIf(self.socket.closed) self.connectClient() self.fcpClient.close() self.failUnless(self.socket.closed) - def testConnectingFailed(self): + def testConnectFailed(self): # simulate a failed connection attempt enum = self.fcpClient.connect(duration=0.2, timeout=0.1) @@ -162,160 +266,271 @@ else: raise RuntimeError('Fell trough') + # check messages the client send - self.failUnless(len(self.messages) == 1) - msg = self.messages.pop(0) - self.failUnless(msg.name == self.fcpClient.Message.MessageClientHello) - + self.assertHasNextMessage(consts.Message.ClientHello) + # check events the client triggered - self.failUnless(len(self.events) == 1) - event, msg = self.events.pop(0) - self.failUnless(event.name == self.fcpClient.events.ClientDisconnected.name) - self.failUnless(msg.get('DisconnectReason', None) == FcpClient.DisconnectReason.ConnectingFailed) + self.assertHasNextEvent( + self.fcpClient.events.ClientDisconnected, + consts.Message.ClientDisconnected, + ('DisconnectReason', consts.DisconnectReason.ConnectingFailed), + ) + self.assertHasNextEvent(None) + # did the client clean up our socket? self.failUnless(self.socket.closed) - def testConnectingSucceeded(self): + def testConnecSucceeded(self): # simulate a successful connection attempt enum = self.fcpClient.connect(duration=0.2, timeout=0.1) msg = enum.next() self.failIf(msg is not None) - self.socket.setResponseMessage( + # check messages the client send message + self.assertHasNextMessage( + consts.Message.ClientHello + ) + + #NOTE: have to send directly via socket here (our sendResponseMessage + # calls client.next() autkmatically) + self.socket.sendResponseMessage( 'NodeHello', FCPVersion='2.0', Node='Fred', - Version='???', - Revision='???', - Build='???', - ExRevision='???', + Version=str(self.fcpClient.ExpectedFcpVersion), + Revision='99999999', + Build='999999', + ExRevision='999999', Testnet='false', CompressionCodecs='1', ConnectionIdentifier='any', NodeLanguage='en', ) msg = enum.next() + + # check events the client triggered + self.assertHasNextEvent( + self.fcpClient.events.ClientConnected, + consts.Message.NodeHello, + ) - # check messages the client received our response - self.failIf(msg is None) - self.failUnless(msg.name == self.fcpClient.Message.MessageNodeHello) + self.assertHasNextEvent(None) + + +#*********************************************************************************** +# +#*********************************************************************************** +#TODO: testCloseOnVersionMismatch +#TODO: testCloseOnDuplicateConnectionName +#TODO: testShutdown + +class TestConnection(BaseTestConnectedClient): + + def testBrokenSocket(self): - # check events the client triggered - self.failUnless(len(self.events) == 1) - event, msg = self.events.pop(0) - self.failUnless(event.name == self.fcpClient.events.ClientConnected.name) - self.failUnless(msg.name == self.fcpClient.Message.MessageNodeHello) + self.socket.close() + # send a test message + self.assertRaises(socket.error, self.fcpClient.sendMessage, 'test' ) + + # check if ClientDisconnected events has been triggered + self.assertHasNextEvent( + self.fcpClient.events.ClientDisconnected, + consts.Message.ClientSocketDied, + ) + self.assertHasNextEvent(None) + - #################################################### - ## - ## PersistentGet test cases - ## - #################################################### - def testEventRequestStarted(self): - - self.connectClient() +#*********************************************************************************** +# +#*********************************************************************************** +class TestClientGet(BaseTestConnectedClient): + + def testClientGetRegistered(self): # request a arbitrary file - myIdentifier = self.fcpClient.getFile( + myIdentifier = self.fcpClient.getData( 'arbitrary-uri', - 'arbitryry.txt' ) - - msg = self.nextMessage() - self.failIf(msg is None) - self.assertEqual(msg.name, self.fcpClient.Message.MessageClientGet) - self.failIf(self.hasNextEvent() ) # no events should be triggered up to now + self.assertHasNextMessage( + consts.Message.ClientGet, + ) + self.assertHasNextEvent(None) + self.failUnless(self.fcpClient.getRequests() ) myRequest = self.fcpClient.getRequest(myIdentifier) self.assertEqual(myIdentifier, myRequest['Identifier']) - self.assertEqual(myRequest['FcStatus'], self.fcpClient.Message.StatusPending) + self.assertEqual(myRequest['FcStatus'], consts.MessageStatus.Pending) + + def testGetData(self): + + # request a arbitrary file + myIdentifier = self.fcpClient.getData( + 'arbitrary-uri', + ) + myRequest = self.fcpClient.getRequest(myIdentifier) + # respond to the file request - self.socket.setResponseMessage( + self.sendResponseMessage( 'PersistentGet', Started='false', **myRequest.params ) - self.fcpClient.next() - - event, msg = self.nextEvent() - self.failIf(event is None) - self.assertEqual(event, self.fcpClient.events.RequestStarted) - self.assertEqual(msg, myRequest) # ??? looks like an implemenation detail - self.assertEqual(myRequest['FcStatus'], self.fcpClient.Message.StatusStarted) + self.assertHasNextEvent( + self.fcpClient.events.RequestStarted, + consts.Message.ClientGet, + ('FcStatus', consts.MessageStatus.Started) + ) + self.assertHasNextEvent(None) + + # simulate a progress + self.sendResponseMessage( + 'SimpleProgress', + Identifier=myIdentifier, + Total=10, + Required=8, + Failed=0, + FatallyFailed=0, + FinalizedTotal='true', + Succeeded=1, + ) + self.assertHasNextEvent( + self.fcpClient.events.RequestProgress, + ) - self.failIf(self.hasNextEvent() ) - - + # finalize request + data = 'foo' + params = { + 'Identifier': myIdentifier, + 'Global': 'false', + 'DataLength': len(data), + 'Metadata.ContentType': 'any', + } + self.sendResponseMessage( + 'DataFound', + **params + ) + # we don't expect an event here.... + self.assertHasNextEvent(None) + + self.sendResponseMessage( + 'AllData', + data=data, + Identifier=myIdentifier, + Global='false', + DataLength=len(data), + ) + self.assertHasNextEvent( + self.fcpClient.events.RequestCompleted, + data=data + ) + self.assertHasNextEvent(None) + - def testEventRequestModified(self): - - self.connectClient() - + def testgetFile(self): + # request a arbitrary file myIdentifier = self.fcpClient.getFile( 'arbitrary-uri', + 'arbitryry.txt' + ) + myRequest = self.fcpClient.getRequest(myIdentifier) + self.assertHasNextMessage(consts.Message.ClientGet) + + # respond to the file request + self.sendResponseMessage( + 'PersistentGet', + Started='false', + **myRequest.params + ) + self.assertHasNextEvent( + self.fcpClient.events.RequestStarted, + consts.Message.ClientGet, + ('FcStatus', consts.MessageStatus.Started) + ) + self.assertHasNextEvent(None) + + # finalize request + data = 'foo' + params = { + 'Identifier': myIdentifier, + 'Global': 'false', + 'DataLength': 123456, + 'Metadata.ContentType': 'any', + } + self.sendResponseMessage( + 'DataFound', + **params + ) + self.assertHasNextEvent( + self.fcpClient.events.RequestCompleted, + consts.Message.ClientGet, + ('FcStatus', consts.MessageStatus.Complete) + ) + self.assertHasNextEvent(None) + +#*********************************************************************************** +# +#*********************************************************************************** +#TODO: class TestClientPut(BaseTestConnectedClient): + +#*********************************************************************************** +# +#*********************************************************************************** +#TODO: testGetRequest() +#TODO: testGetRequest() +#TODO: testResendRequest() + +class TestRequests(BaseTestConnectedClient): + + def testModifyRequest(self): + + # request a arbitrary file + myIdentifier = self.fcpClient.getFile( + 'arbitrary-uri', 'arbitryry.txt', persistentUserData='foo', - priorityClass=self.fcpClient.Priority.Medium, + priorityClass=consts.Priority.Medium, ) - msg = self.nextMessage() - self.failIf(msg is None) - self.assertEqual(msg.name, self.fcpClient.Message.MessageClientGet) + myRequest = self.fcpClient.getRequest(myIdentifier) + self.assertHasNextMessage(consts.Message.ClientGet) # respond to the file request - self.socket.setResponseMessage( + self.sendResponseMessage( 'PersistentGet', Started='false', - **msg.params + **myRequest.params ) - self.fcpClient.next() - event, msg = self.nextEvent() - self.failIf(event is None) - self.assertEqual(event, self.fcpClient.events.RequestStarted) - - - myRequest = self.fcpClient.getRequest(myIdentifier) - - + self.assertHasNextEvent(self.fcpClient.events.RequestStarted ) + # test modify persistent user data - self.fcpClient.modifyRequest(myIdentifier, persistentUserData='bar', priorityClass=self.fcpClient.Priority.High) - msg = self.nextMessage() - self.failIf(msg is None) - self.assertEqual(msg.name, self.fcpClient.Message.MessageModifyPersistentRequest) + self.fcpClient.modifyRequest(myIdentifier, persistentUserData='bar', priorityClass=consts.Priority.High) + msg = self.assertHasNextMessage(consts.Message.ModifyPersistentRequest) # respond to the file request - self.socket.setResponseMessage( + self.sendResponseMessage( 'PersistentRequestModified', **msg.params ) - self.fcpClient.next() + self.assertHasNextEvent(self.fcpClient.events.RequestModified) - event, eventMsg = self.nextEvent() - self.failIf(event is None) - self.assertEqual(event, self.fcpClient.events.RequestModified) - self.failUnless(self.fcpClient.Message.ModifiedRequestPersistentUserData in eventMsg['FcModified']) - self.failUnless(self.fcpClient.Message.ModifiedRequestPriorityClass in eventMsg['FcModified']) + self.failUnless(consts.RequestModified.PersistentUserData in myRequest['FcModified']) + self.failUnless(consts.RequestModified.PriorityClass in myRequest['FcModified']) self.assertEqual('bar', myRequest['FcPersistentUserData']) - self.assertEqual(self.fcpClient.Priority.High, myRequest['PriorityClass']) - self.failIf(self.events) + self.assertEqual(consts.Priority.High, myRequest['PriorityClass']) - - - - + self.assertHasNextEvent(None) def testRemoveRequest(self): - - self.connectClient() - + # request a file myIdentifier = self.fcpClient.getFile( 'arbitrary-uri', @@ -324,75 +539,50 @@ myRequest = self.fcpClient.getRequest(myIdentifier) # respond to the file request - self.socket.setResponseMessage( + self.sendResponseMessage( 'PersistentGet', Started='false', **myRequest.params ) - self.fcpClient.next() - - + # ignore events and messages so far self.events = [] self.messages = [] - # now cancel request self.fcpClient.removeRequest(myIdentifier) # status of our request should be set to removed emidiately, but it should # not be removed from the client - self.assertEqual(myRequest['FcStatus'], self.fcpClient.Message.StatusRemoved) + self.assertEqual(myRequest['FcStatus'], consts.MessageStatus.Removed) self.failUnless(myIdentifier in self.fcpClient.getRequests()) # client schould send a RemovePersistentRequest - msg = self.nextMessage() - self.failIf(msg is None) - self.assertEqual(msg.name, self.fcpClient.Message.MessageRemovePersistentRequest) - + self.assertHasNextMessage(consts.Message.RemovePersistentRequest) + # respond with a PersistentRequestRemoved - self.socket.setResponseMessage( + self.sendResponseMessage( 'PersistentRequestRemoved', - Identifier=msg['Identifier'] + Identifier=myIdentifier, ) - self.fcpClient.next() - + # now the request should have been removed self.failIf(self.fcpClient.getRequests()) - self.failIf(self.hasNextEvent() ) + # client never sends an event here + self.assertHasNextEvent(None) + +#*********************************************************************************** +# +#*********************************************************************************** +#TODO: testRestoreClientPut and friends +class TestRestoreRequests(BaseTestConnectedClient): - - #################################################### - ## - ## modifyRequest test cases - ## - #################################################### - - - #################################################### - ## - ## removeRequest test cases - ## - #################################################### - + def testRestorePersistentGet_InvalidIdentifier(self): - - - #################################################### - ## - ## restore persistent request test cases - ## - ## should be run after removeRequest test cases - ### - #################################################### - def testRestorePersistentRequest_InvalidIdentifier(self): - - self.connectClient() - # throw an invalid PersistentRequest at the client myIdentifier = 'true-invalid-request-identifier' - self.socket.setResponseMessage( + self.sendResponseMessage( 'PersistentGet', Identifier=myIdentifier, ReturnType='disk', @@ -401,27 +591,23 @@ Started='false', Global='false', ) - self.fcpClient.next() - + # the client should now to cancel the request - msg = self.nextMessage() - self.failIf(msg is None) - self.assertEqual(msg.name, self.fcpClient.Message.MessageRemovePersistentRequest) - self.failUnless(msg['Identifier'] == myIdentifier) + self.assertHasNextMessage( + consts.Message.RemovePersistentRequest, + ('Identifier', myIdentifier) + ) requests = self.fcpClient.getRequests() self.failIf(requests) # the client should not trigger any events - self.failIf(self.hasNextEvent() ) - - - def testRestorePersistentRequest_ValidIdentifier(self): - - self.connectClient() - + self.assertHasNextEvent(None) + + + def testRestorePersistentGet_ValidIdentifier(self): + # we need a valid identifier to restore a request, so hack a bit - myIdentifier = self.fcpClient.getFile( 'arbitrary-uri', 'arbitryry.txt' @@ -430,17 +616,16 @@ identifier = myRequest['Identifier'] self.fcpClient.removeRequest(myIdentifier) - self.socket.setResponseMessage( + self.sendResponseMessage( 'PersistentRequestRemoved', Identifier=identifier, ) - self.fcpClient.next() self.messages = [] self.events = [] # throw a PersistentGet at the client with the identifier we hacked - self.socket.setResponseMessage( + self.sendResponseMessage( 'PersistentGet', Identifier=identifier, ReturnType='disk', @@ -449,47 +634,127 @@ Started='false', ClientToken=myRequest['ClientToken'] ) - self.fcpClient.next() - + # check if the client restored the request - event, msg = self.nextEvent() - self.failIf(event is None) - self.assertEqual(event, self.fcpClient.events.RequestRestored) + self.assertHasNextEvent( + self.fcpClient.events.RequestRestored, + consts.Message.ClientGet, + ('Identifier', myIdentifier) + ) - requests = self.fcpClient.getRequests() - self.failUnless(requests) - self.assertEqual(identifier, requests[msg['Identifier']]['Identifier']) + self.assertHasNextEvent(None) + +#*********************************************************************************** +# +#*********************************************************************************** +#TODO: testDDAReadDenied_ReadDissallowed +#TODO: testDDAWriteDenied +#TODO: testDDAWriteDenied_WriteDisallowed + +class TestDDA(BaseTestConnectedClient): + + def testDDAWriteDenied(self): + + # request a file + myIdentifier = self.fcpClient.getFile( + 'arbitrary-uri', + os.path.join(DIR, 'DDATest.txt') + ) - self.failIf(self.hasNextEvent() ) + # client schould send a ClientGet + self.assertHasNextMessage(consts.Message.ClientGet) + # respond with a ProtocolError + self.sendResponseMessage( + 'ProtocolError', + Code=25, # DDADenied + Identifier=myIdentifier, + ExtraDescription='An error occured', + Fatal='false', + Global='false', + ) + + # client should respond with a TestDDARequest + self.assertHasNextMessage( + consts.Message.TestDDARequest, + ('Directory', DIR), + ('WantWriteDirectory', True) + ) - #################################################### - ## - ## error test cases - ## - #################################################### - def testBrokenSocket(self): + #msg = self.nextMessage() + #self.failIf(msg is None) + #self.assertEqual(msg.name, consts.Message.TestDDARequest) + ##self.assertEqual(msg['Directory'], DIR) + #self.failIf(not msg['WantWriteDirectory']) - self.connectClient() - self.socket.close() - # send a test message - self.assertRaises(socket.error, self.fcpClient.sendMessage, 'test' ) + # respond with a TestDDAReply message + writeContent = 'blah' + fd, fpath = tempfile.mkstemp(dir=DIR) + os.close(fd) + self.sendResponseMessage( + 'TestDDAReply', + Directory=DIR, + WriteFilename=fpath, + ContentToWrite=writeContent, + ) + + # client should respond with a TestDDAResponse + self.assertHasNextMessage( + consts.Message.TestDDAResponse, + ('Directory', DIR) + ) + + # check if content was written + with open(fpath) as fp: + self.failUnless(fp.read() == writeContent) + + # respond with a TestDDAComplete message + self.sendResponseMessage( + 'TestDDAComplete', + Directory=DIR, + WriteDirectoryAllowed='true', + ) + + # check if our tempfile was removed + self.failIf(os.path.isfile(fpath)) + + # client sahould send a new ClientGet + msg = self.assertHasNextMessage(consts.Message.ClientGet) + + # no events should have been triggered upo to now + self.assertHasNextEvent(None) - # check if ClientDisconnected events has been triggered - event, msg = self.nextEvent() - self.failIf(event is None) - self.assertEqual(event, self.fcpClient.events.ClientDisconnected) - self.assertEqual(msg.name, self.fcpClient.Message.MessageClientSocketDied) + # respond with a PersistentGet + self.sendResponseMessage( + 'PersistentGet', + Started='false', + **msg.params + ) + + # check if client send expected events + self.assertHasNextEvent( + self.fcpClient.events.RequestStarted, + consts.Message.ClientGet, + ('Identifier', myIdentifier) + ) + self.assertHasNextEvent(None) - self.failIf(self.hasNextEvent() ) + requests = self.fcpClient.getRequests() + self.assertEqual(len(requests), 1) + + + #def testDDAReadDenied(self): - + # pass + +#*********************************************************************************** +# +#*********************************************************************************** +class TestCollisions(BaseTestConnectedClient): def testIdentifierCollision(self): - - self.connectClient() - + # request a file myIdentifier = self.fcpClient.getFile( 'arbitrary-uri', @@ -497,50 +762,37 @@ ) # client schould send a ClientGet - msg = self.nextMessage() - self.failIf(msg is None) - self.assertEqual(msg.name, self.fcpClient.Message.MessageClientGet) + self.assertHasNextMessage(consts.Message.ClientGet) - # check if our request was registered - requests = self.fcpClient.getRequests() - self.failUnless(len(requests) == 1) # respond with an IdentifierCollision - self.socket.setResponseMessage( + self.sendResponseMessage( 'IdentifierCollision', - Identifier=msg['Identifier'] + Identifier=myIdentifier, ) - self.fcpClient.next() - + # client schould send a new ClientGet - msg2 = self.nextMessage() - self.failIf(msg2 is None) - self.assertEqual(msg2.name, self.fcpClient.Message.MessageClientGet) - + self.assertHasNextMessage(consts.Message.ClientGet) + # check client state requests = self.fcpClient.getRequests() self.assertEqual(len(requests), 1) # check if RequestModified event has been triggered - event, eventMsg = self.nextEvent() - self.failIf(event is None) - self.assertEqual(event, self.fcpClient.events.RequestModified) - self.failUnless(self.fcpClient.Message.ModifiedRequestIdentifier in eventMsg['FcModified']) - self.assertEqual(eventMsg['FcModified'][self.fcpClient.Message.ModifiedRequestIdentifier], myIdentifier) - self.assertNotEqual(eventMsg['Identifier'], myIdentifier) + msg = self.assertHasNextEvent( + self.fcpClient.events.RequestModified, + consts.Message.ClientGet, + ) - self.failIf(self.events) + self.failUnless(consts.RequestModified.Identifier in msg['FcModified']) + self.assertEqual(msg['FcModified'][consts.RequestModified.Identifier], myIdentifier) + self.assertNotEqual(msg['Identifier'], myIdentifier) + + self.assertHasNextEvent(None) - #################################################### - ## - ## test filename collisions - ## - #################################################### def testFilenameCollision_HandleRename(self): - - self.connectClient() - + # request a file fpath = os.path.join(DIR, 'test.txt') open(fpath, 'wb').close() @@ -549,62 +801,49 @@ myIdentifier = self.fcpClient.getFile( 'arbitrary-uri', fpath, - filenameCollision=self.fcpClient.FilenameCollision.HandleRename, + filenameCollision=consts.FilenameCollision.HandleRename, ) # client schould send a ClientGet - msg = self.nextMessage() - self.failIf(msg is None) - self.assertEqual(msg.name, self.fcpClient.Message.MessageClientGet) + self.assertHasNextMessage(consts.Message.ClientGet) # check if our request was registered requests = self.fcpClient.getRequests() self.failUnless(len(requests) == 1) # now respond with a ProtocolError - self.socket.setResponseMessage( + self.sendResponseMessage( 'ProtocolError', - Identifier=msg['Identifier'], + Identifier=myIdentifier, Code='10', # disk target exists ExtraDescription='An error occured', Fatal='false', Global='false', ) - self.fcpClient.next() - + # client schould send a new ClientGet with a differing filename - msg2 = self.nextMessage() - self.failIf(msg2 is None) - self.assertEqual(msg2.name, self.fcpClient.Message.MessageClientGet) + msg = self.assertHasNextEvent( + self.fcpClient.events.RequestModified, + consts.Message.ClientGet + ) + + self.failUnless(consts.RequestModified.Filename in msg['FcModified']) + self.assertEqual(msg['FcModified'][consts.RequestModified.Filename], fpath) + self.assertNotEqual(msg['Filename'], fpath) - # check if filename was replaced - self.failIf(msg['Filename'] == msg2['Filename']) - - event, eventMsg = self.nextEvent() - self.failIf(event is None) - self.assertEqual(event, self.fcpClient.events.RequestModified) - self.failUnless(self.fcpClient.Message.ModifiedRequestFilename in eventMsg['FcModified']) - self.assertEqual(eventMsg['FcModified'][self.fcpClient.Message.ModifiedRequestFilename], fpath) - self.assertNotEqual(eventMsg['Filename'], fpath) - # check flags - filenameCollision = eventMsg['FcFilenameCollision'] + filenameCollision = msg['FcFilenameCollision'] self.assertEqual( - filenameCollision & self.fcpClient.FilenameCollision.MaskHandle, - self.fcpClient.FilenameCollision.HandleRename + filenameCollision & consts.FilenameCollision.MaskHandle, + consts.FilenameCollision.HandleRename ) - self.failUnless(filenameCollision & self.fcpClient.FilenameCollision.CollisionHandled) + self.failUnless(filenameCollision & consts.FilenameCollision.CollisionHandled) + self.assertHasNextEvent(None) - self.failIf(self.events) - - - def testFilenameCollision_HandleNever(self): - - self.connectClient() - + # request a file fpath = os.path.join(DIR, 'test.txt') open(fpath, 'wb').close() @@ -613,169 +852,92 @@ myIdentifier = self.fcpClient.getFile( 'arbitrary-uri', fpath, - filenameCollision=self.fcpClient.FilenameCollision.HandleNever, + filenameCollision=consts.FilenameCollision.HandleNever, ) myRequest = self.fcpClient.getRequest(myIdentifier) # client schould send a ClientGet - msg = self.nextMessage() - self.failIf(msg is None) - self.assertEqual(msg.name, self.fcpClient.Message.MessageClientGet) + self.assertHasNextMessage(consts.Message.ClientGet) # check if our request was registered requests = self.fcpClient.getRequests() self.failUnless(len(requests) == 1) # now respond with a ProtocolError - self.socket.setResponseMessage( + self.sendResponseMessage( 'ProtocolError', - Identifier=msg['Identifier'], + Identifier=myIdentifier, Code='10', # disk target exists ExtraDescription='An error occured', Fatal='false', Global='false', ) - self.fcpClient.next() - + # client schould send no messages and trigger a RequestFailed event - msg2 = self.nextMessage() - self.failUnless(msg2 is None) - - event, eventMsg = self.nextEvent() - self.failIf(event is None) - self.assertEqual(event, self.fcpClient.events.RequestFailed) - #TODO: more checks here + self.assertHasNextEvent(self.fcpClient.events.RequestFailed) # request should have been removed self.failIf(self.fcpClient.getRequests()) - self.failIf(self.events) + self.assertHasNextEvent(None) - #################################################### - ## - ## DDA test cases - ## - #################################################### - def testDDAWriteDenied(self): - - self.connectClient() - - # request a file - myIdentifier = self.fcpClient.getFile( - 'arbitrary-uri', - os.path.join(DIR, 'DDATest.txt') - ) - - - # client schould send a ClientGet - msg = self.nextMessage() - self.failIf(msg is None) - self.assertEqual(msg.name, self.fcpClient.Message.MessageClientGet) - - # check client state - requests = self.fcpClient.getRequests() - self.failUnless(len(requests) == 1) - - # respond with a ProtocolError - self.socket.setResponseMessage( - 'ProtocolError', - Code=25, # DDADenied - Identifier=msg['Identifier'], - ExtraDescription='An error occured', - Fatal='false', - Global='false', - ) - self.fcpClient.next() - - # client should respond with a TestDDARequest - msg = self.nextMessage() - self.failIf(msg is None) - self.assertEqual(msg.name, self.fcpClient.Message.MessageTestDDARequest) - self.assertEqual(msg['Directory'], DIR) - self.failIf(not msg['WantWriteDirectory']) - - - # respond with a TestDDAReply message - writeContent = 'blah' - fd, fpath = tempfile.mkstemp(dir=DIR) - os.close(fd) - self.socket.setResponseMessage( - 'TestDDAReply', - Directory=msg['Directory'], - WriteFilename=fpath, - ContentToWrite=writeContent, - ) - self.fcpClient.next() - - # client should respond with a TestDDAResponse - msg = self.nextMessage() - self.failIf(msg is None) - self.assertEqual(msg.name, self.fcpClient.Message.MessageTestDDAResponse) - self.assertEqual(msg['Directory'], DIR) - - # check if content was written - with open(fpath) as fp: - self.failUnless(fp.read() == writeContent) - - # respond with a TestDDAComplete message - self.socket.setResponseMessage( - 'TestDDAComplete', - Directory=msg['Directory'], - WriteDirectoryAllowed='true', - ) - self.fcpClient.next() - - # check if our tempfile was removed - self.failIf(os.path.isfile(fpath)) - - # client sahould send a new ClientGet - msg = self.nextMessage() - self.failIf(msg is None) - self.assertEqual(msg.name, self.fcpClient.Message.MessageClientGet) - - # no events should have been triggered upo to now - self.failIf(self.events) - - # respond with a PersistentGet - self.socket.setResponseMessage( - 'PersistentGet', - Started='false', - **msg.params - ) - self.fcpClient.next() - - # check if client send expected events - event, eventMsg = self.nextEvent() - self.failIf(event is None) - self.assertEqual(event, self.fcpClient.events.RequestStarted) - - # check client state - self.failUnless(msg['Identifier'] == myIdentifier) - requests = self.fcpClient.getRequests() - self.assertEqual(len(requests), 1) - - #################################################### - ## - ## - ## - #################################################### - +#*********************************************************************************** +# +#*********************************************************************************** +#TODO: class TestNodeAndPeers(BaseTestConnectedClient): +#*********************************************************************************** +# +#*********************************************************************************** +#TODO: class TestPlugins(BaseTestConnectedClient): + +#*********************************************************************************** +#TODO: class TestConfig(BaseTestConnectedClient): + +#*********************************************************************************** +# +#*********************************************************************************** +#TODO: class TestSSKKeypair(BaseTestConnectedClient): + +#*********************************************************************************** +# +#*********************************************************************************** +#TODO: class TestSubscribeUSK(BaseTestConnectedClient): + + + #********************************************************************************* # #********************************************************************************* def suite(): - return unittest.TestLoader().loadTestsFromTestCase(TestFcpClient) + tests = ( + TestConnect, + TestConnection, + TestClientGet, + TestRequests, + TestRestoreRequests, + TestDDA, + TestCollisions, + ) + + suite = unittest.TestSuite() + for test in tests: + suite.addTest(unittest.makeSuite(test)) + return suite + def test(): - unittest.main() + unittest.TextTestRunner(verbosity=1).run(suite()) -if __name__ == '__main__': - test() +if __name__ == "__main__": + test() + + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-03 13:16:02
|
Revision: 127 http://fclient.svn.sourceforge.net/fclient/?rev=127&view=rev Author: jurner Date: 2008-02-03 05:16:02 -0800 (Sun, 03 Feb 2008) Log Message: ----------- a few more tests Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-03 13:14:59 UTC (rev 126) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-03 13:16:02 UTC (rev 127) @@ -35,8 +35,7 @@ #*********************************************************************************** class BaseTestClient(unittest.TestCase): """Base class that does not connect to FcpClient prior to each test""" - - + def __init__(self, *args, **kwargs): unittest.TestCase.__init__(self, *args, **kwargs) @@ -65,7 +64,6 @@ def connectClient(self): """Connects to the client""" - enum = self.fcpClient.connect(duration=0.2, timeout=0.1) msg = enum.next() self.failIf(msg is not None) @@ -76,9 +74,9 @@ FCPVersion='2.0', Node='Fred', Version=str(self.fcpClient.ExpectedFcpVersion), - Revision='99999999', + Revision='999999999999', Build='999999', - ExRevision='999999', + ExRevision='9999999999', Testnet='false', CompressionCodecs='1', ConnectionIdentifier='any', @@ -88,7 +86,6 @@ self.messages.pop(0) self.events.pop(0) - def assertHasNextEvent(self, expectedEvent=None, messageName=None, @@ -142,23 +139,22 @@ return msg - def assertHasNextMessage(self, - messageName, - param1=None, - param2=None, - param3=None, - param4=None, - param5=None, - data=None - ): + messageName, + param1=None, + param2=None, + param3=None, + param4=None, + param5=None, + data=None + ): """Tests if we received a certain message from the client - @param messageName: expected mesageName or None if no message is expected - @param param1: tuple(paramName, value) of a message parameter expected - @param data: data expected along with the message or None - - @return: message if a message was received or None - """ + @param messageName: expected mesageName or None if no message is expected + @param param1: tuple(paramName, value) of a message parameter expected + @param data: data expected along with the message or None + + @return: message if a message was received or None + """ if messageName is None: self.failIf(self.messages) else: @@ -188,14 +184,12 @@ if data is not None: self.assertEqual(data, msg.data) return msg - - + def sendResponseMessage(self, messageName, data=None, **params): """Posts a message to the client""" self.socket.sendResponseMessage(messageName, data=data, **params) self.fcpClient.next() - def setUp(self): self.oldSocketModule = fcp2_0_client.socket fcp2_0_client.socket = self.socketModule @@ -211,9 +205,7 @@ # capture all messages the client sent self.messages = [] # messages the client send self.socket.setBytesReceiver(self._captureMessagesFromClient) - - - + def tearDown(self): fcp2_0_client.socket = self.oldSocketModule @@ -221,7 +213,6 @@ for eventName in self.fcpClient.Events._events_: event = getattr(self.fcpClient.events, eventName) event -= self._captureEventsFromClient - # clean up tmpfiles for fpath in self.tmpfiles: os.remove(fpath) @@ -254,7 +245,7 @@ self.failUnless(self.socket.closed) - def testConnectFailed(self): + def testConnect_Failure(self): # simulate a failed connection attempt enum = self.fcpClient.connect(duration=0.2, timeout=0.1) @@ -281,10 +272,9 @@ # did the client clean up our socket? self.failUnless(self.socket.closed) - - + - def testConnecSucceeded(self): + def testConnect_Success(self): # simulate a successful connection attempt enum = self.fcpClient.connect(duration=0.2, timeout=0.1) @@ -303,9 +293,9 @@ FCPVersion='2.0', Node='Fred', Version=str(self.fcpClient.ExpectedFcpVersion), - Revision='99999999', - Build='999999', - ExRevision='999999', + Revision='999999999999', + Build='9999999999', + ExRevision='9999999999', Testnet='false', CompressionCodecs='1', ConnectionIdentifier='any', @@ -321,32 +311,125 @@ self.assertHasNextEvent(None) - #*********************************************************************************** # #*********************************************************************************** -#TODO: testCloseOnVersionMismatch -#TODO: testCloseOnDuplicateConnectionName -#TODO: testShutdown - -class TestConnection(BaseTestConnectedClient): +class TestDisconnectReason(BaseTestConnectedClient): - def testBrokenSocket(self): + def testDuplicateClientName(self): + self.sendResponseMessage('CloseConnectionDuplicateClientName') + msg = self.assertHasNextEvent( + self.fcpClient.events.ClientDisconnected, + consts.Message.ClientDisconnected, + ('DisconnectReason', consts.DisconnectReason.DuplicateClientName), + ) + self.failUnless('Param' in msg.params) + self.assertEqual(msg['Param'], None) + + self.assertHasNextEvent(None) + + + def testSocketDied_Receive(self): + self.socket.close() + self.fcpClient.next() + # check if ClientDisconnected events has been triggered + msg = self.assertHasNextEvent( + self.fcpClient.events.ClientDisconnected, + consts.Message.ClientDisconnected, + ('DisconnectReason', consts.DisconnectReason.SocketDied), + #('Param', ClientSocketDiedMessage) # can not test here + ) + self.failUnless('Param' in msg.params) + self.assertEqual(msg['Param'].name, consts.Message.ClientSocketDied) + + self.assertHasNextEvent(None) + + + def testSocketDied_Send(self): + + self.socket.close() + # send a test message self.assertRaises(socket.error, self.fcpClient.sendMessage, 'test' ) # check if ClientDisconnected events has been triggered - self.assertHasNextEvent( + msg = self.assertHasNextEvent( self.fcpClient.events.ClientDisconnected, - consts.Message.ClientSocketDied, + consts.Message.ClientDisconnected, + ('DisconnectReason', consts.DisconnectReason.SocketDied), + #('Param', ClientSocketDiedMessage) # can not test here ) + self.failUnless('Param' in msg.params) + self.assertEqual(msg['Param'].name, consts.Message.ClientSocketDied) + self.assertHasNextEvent(None) - + + + def testShutdown(self): + + self.fcpClient.closeFreenet() + + msg = self.assertHasNextMessage(consts.Message.Shutdown) + self.sendResponseMessage( + 'ProtocolError', + Code='18', # Shutting down + ) + + # check events the client triggered + msg = self.assertHasNextEvent( + self.fcpClient.events.ClientDisconnected, + consts.Message.ClientDisconnected, + ('DisconnectReason', consts.DisconnectReason.Shutdown) + #('Param', NodeHelloMessage) # can not test here + ) + self.failUnless('Param' in msg.params) + self.assertEqual(msg['Param'], None) + + self.assertHasNextEvent(None) + def testVersionMismatch(self): + + # cheat a bit and reconnect client + enum = self.fcpClient.connect(duration=0.2, timeout=0.1) + msg = enum.next() + self.failIf(msg is not None) + + # check messages the client send message + self.assertHasNextMessage(consts.Message.ClientHello) + + #NOTE: have to send directly via socket here (our sendResponseMessage + # calls client.next() autkmatically) + self.socket.sendResponseMessage( + 'NodeHello', + FCPVersion='0.0', + Node='Fred', + Version=str(self.fcpClient.ExpectedFcpVersion), + Revision='0', + Build='0', + ExRevision='0', + Testnet='false', + CompressionCodecs='1', + ConnectionIdentifier='any', + NodeLanguage='en', + ) + msg = enum.next() + + # check events the client triggered + msg = self.assertHasNextEvent( + self.fcpClient.events.ClientDisconnected, + consts.Message.ClientDisconnected, + ('DisconnectReason', consts.DisconnectReason.VersionMissmatch) + #('Param', NodeHelloMessage) # can not test here + ) + self.failUnless('Param' in msg.params) + self.assertEqual(msg['Param'].name, consts.Message.NodeHello) + + self.assertHasNextEvent(None) + #*********************************************************************************** # #*********************************************************************************** @@ -369,7 +452,7 @@ self.assertEqual(myRequest['FcStatus'], consts.MessageStatus.Pending) - def testGetData(self): + def testGetData_Success(self): # request a arbitrary file myIdentifier = self.fcpClient.getData( @@ -429,14 +512,53 @@ ) self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, + consts.Message.ClientGet, + ('FcStatus', consts.MessageStatus.Complete), data=data ) self.assertHasNextEvent(None) - def testgetFile(self): + def testGetData_Failure(self): # request a arbitrary file + myIdentifier = self.fcpClient.getData( + 'arbitrary-uri', + ) + myRequest = self.fcpClient.getRequest(myIdentifier) + + # respond to the file request + self.sendResponseMessage( + 'PersistentGet', + Started='false', + **myRequest.params + ) + self.assertHasNextEvent( + self.fcpClient.events.RequestStarted, + consts.Message.ClientGet, + ('FcStatus', consts.MessageStatus.Started) + ) + self.assertHasNextEvent(None) + + # finalize request + self.sendResponseMessage( + 'GetFailed', + Code='28', # All data not found + Identifier=myIdentifier, + Global='false', + # blah.. more here + ) + self.assertHasNextEvent( + self.fcpClient.events.RequestFailed, + consts.Message.ClientGet, + ('FcStatus', consts.MessageStatus.Error) + ) + self.assertHasNextEvent(None) + + + def testGetFile_Success(self): + + # request a arbitrary file myIdentifier = self.fcpClient.getFile( 'arbitrary-uri', 'arbitryry.txt' @@ -476,6 +598,142 @@ ) self.assertHasNextEvent(None) + + def testGetFile_Failure(self): + + # request a arbitrary file + myIdentifier = self.fcpClient.getFile( + 'arbitrary-uri', + 'arbitryry.txt' + ) + myRequest = self.fcpClient.getRequest(myIdentifier) + self.assertHasNextMessage(consts.Message.ClientGet) + + # respond to the file request + self.sendResponseMessage( + 'PersistentGet', + Started='false', + **myRequest.params + ) + self.assertHasNextEvent( + self.fcpClient.events.RequestStarted, + consts.Message.ClientGet, + ('FcStatus', consts.MessageStatus.Started) + ) + self.assertHasNextEvent(None) + + # finalize request + self.sendResponseMessage( + 'GetFailed', + Code='28', # All data not found + Identifier=myIdentifier, + Global='false', + # blah.. more here + ) + self.assertHasNextEvent( + self.fcpClient.events.RequestFailed, + consts.Message.ClientGet, + ('FcStatus', consts.MessageStatus.Error) + ) + self.assertHasNextEvent(None) + + + + def testGetKeyInfo_Success(self): + + # request a arbitrary uri + myIdentifier = self.fcpClient.getKeyInfo( + 'arbitrary-uri', + persistence=consts.Persistence.Forever, # cheat a bit, so we can test multiple cases + ) + myRequest = self.fcpClient.getRequest(myIdentifier) + self.assertHasNextMessage(consts.Message.ClientGet) + + # respond to the file request + self.sendResponseMessage( + 'PersistentGet', + Started='false', + **myRequest.params + ) + self.assertHasNextEvent( + self.fcpClient.events.RequestStarted, + consts.Message.ClientGet, + ('FcStatus', consts.MessageStatus.Started) + ) + self.assertHasNextEvent(None) + + # finalize request + data = 'foo' + params = { + 'Identifier': myIdentifier, + 'Global': 'false', + 'DataLength': 123456, + 'Metadata.ContentType': 'any', + } + self.sendResponseMessage( + 'DataFound', + **params + ) + self.assertHasNextEvent( + self.fcpClient.events.RequestCompleted, + consts.Message.ClientGet, + ('FcStatus', consts.MessageStatus.Complete) + ) + self.assertHasNextEvent(None) + + # test specdial case where ProtocolError.TooBig is handled as success + self.sendResponseMessage( + 'GetFailed', + Code='21', # Too big + Identifier=myIdentifier, + Global='false', + # blah.. more here + ) + self.assertHasNextEvent( + self.fcpClient.events.RequestCompleted, + consts.Message.ClientGet, + ('FcStatus', consts.MessageStatus.Complete) + ) + self.assertHasNextEvent(None) + + + def testGetKeyInfo_Failure(self): + + # request a arbitrary file + myIdentifier = self.fcpClient.getKeyInfo( + 'arbitrary-uri', + ) + myRequest = self.fcpClient.getRequest(myIdentifier) + self.assertHasNextMessage(consts.Message.ClientGet) + + # respond to the file request + self.sendResponseMessage( + 'PersistentGet', + Started='false', + **myRequest.params + ) + self.assertHasNextEvent( + self.fcpClient.events.RequestStarted, + consts.Message.ClientGet, + ('FcStatus', consts.MessageStatus.Started) + ) + self.assertHasNextEvent(None) + + # finalize request + self.sendResponseMessage( + 'GetFailed', + Code='28', # All data not found + Identifier=myIdentifier, + Global='false', + # blah.. more here + ) + self.assertHasNextEvent( + self.fcpClient.events.RequestFailed, + consts.Message.ClientGet, + ('FcStatus', consts.MessageStatus.Error) + ) + self.assertHasNextEvent(None) + #*********************************************************************************** # #*********************************************************************************** @@ -585,6 +843,7 @@ self.sendResponseMessage( 'PersistentGet', Identifier=myIdentifier, + Global='false', ReturnType='disk', Verbosity='1', PersistenceType='forever', @@ -622,12 +881,12 @@ ) self.messages = [] self.events = [] - - + # throw a PersistentGet at the client with the identifier we hacked self.sendResponseMessage( 'PersistentGet', Identifier=identifier, + Global='false', ReturnType='disk', Verbosity='1', PersistenceType='forever', @@ -913,7 +1172,7 @@ tests = ( TestConnect, - TestConnection, + TestDisconnectReason, TestClientGet, TestRequests, TestRestoreRequests, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-05 12:27:51
|
Revision: 148 http://fclient.svn.sourceforge.net/fclient/?rev=148&view=rev Author: jurner Date: 2008-02-05 04:27:53 -0800 (Tue, 05 Feb 2008) Log Message: ----------- adapt Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-05 12:27:18 UTC (rev 147) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-05 12:27:53 UTC (rev 148) @@ -64,7 +64,7 @@ def connectClient(self): """Connects to the client""" - enum = self.fcpClient.connect(duration=0.2, timeout=0.1) + enum = self.fcpClient.iterConnect(duration=0.2, timeout=0.1) msg = enum.next() self.failIf(msg is not None) #NOTE: have to send directly via socket here (our sendResponseMessage @@ -198,8 +198,7 @@ # conect all events self.events = [] # events received from the client - for eventName in self.fcpClient.Events._events_: - event = getattr(self.fcpClient.events, eventName) + for event in self.fcpClient.events: event += self._captureEventsFromClient # capture all messages the client sent @@ -210,8 +209,7 @@ fcp2_0_client.socket = self.oldSocketModule # disconnect all events - for eventName in self.fcpClient.Events._events_: - event = getattr(self.fcpClient.events, eventName) + for event in self.fcpClient.events: event -= self._captureEventsFromClient # clean up tmpfiles for fpath in self.tmpfiles: os.remove(fpath) @@ -245,8 +243,30 @@ self.failUnless(self.socket.closed) - def testConnect_Failure(self): + + def testConnect(self): + nodeHello = self.fcpClient.connect(duration=0.2, timeout=0.1) + self.failIf(nodeHello is not None) + self.socket.sendResponseMessage( + 'NodeHello', + FCPVersion='2.0', + Node='Fred', + Version=str(self.fcpClient.ExpectedFcpVersion), + Revision='999999999999', + Build='9999999999', + ExRevision='9999999999', + Testnet='false', + CompressionCodecs='1', + ConnectionIdentifier='any', + NodeLanguage='en', + ) + nodeHello = self.fcpClient.connect(duration=0.2, timeout=0.1) + self.failIf(nodeHello is None) + + + def testIterConnect_Failure(self): + # simulate a failed connection attempt enum = self.fcpClient.connect(duration=0.2, timeout=0.1) t0 = time.time() @@ -274,10 +294,10 @@ self.failUnless(self.socket.closed) - def testConnect_Success(self): + def testIterConnect_Success(self): # simulate a successful connection attempt - enum = self.fcpClient.connect(duration=0.2, timeout=0.1) + enum = self.fcpClient.iterConnect(duration=0.2, timeout=0.1) msg = enum.next() self.failIf(msg is not None) @@ -394,7 +414,7 @@ def testVersionMismatch(self): # cheat a bit and reconnect client - enum = self.fcpClient.connect(duration=0.2, timeout=0.1) + enum = self.fcpClient.iterConnect(duration=0.2, timeout=0.1) msg = enum.next() self.failIf(msg is not None) @@ -449,7 +469,7 @@ self.failUnless(self.fcpClient.getRequests() ) myRequest = self.fcpClient.getRequest(myIdentifier) self.assertEqual(myIdentifier, myRequest['Identifier']) - self.assertEqual(myRequest['FcStatus'], consts.MessageStatus.Pending) + self.assertEqual(myRequest['FcStatus'], consts.RequestStatus.Pending) def testGetData_Success(self): @@ -469,7 +489,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestStarted, consts.Message.ClientGet, - ('FcStatus', consts.MessageStatus.Started) + ('FcStatus', consts.RequestStatus.Started) ) self.assertHasNextEvent(None) @@ -513,7 +533,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.MessageStatus.Complete), + ('FcStatus', consts.RequestStatus.Complete | consts.RequestStatus.Removed), data=data ) self.assertHasNextEvent(None) @@ -536,7 +556,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestStarted, consts.Message.ClientGet, - ('FcStatus', consts.MessageStatus.Started) + ('FcStatus', consts.RequestStatus.Started) ) self.assertHasNextEvent(None) @@ -551,7 +571,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.MessageStatus.Error) + ('FcStatus', consts.RequestStatus.Complete | consts.RequestStatus.Error | consts.RequestStatus.Removed) ) self.assertHasNextEvent(None) @@ -575,7 +595,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestStarted, consts.Message.ClientGet, - ('FcStatus', consts.MessageStatus.Started) + ('FcStatus', consts.RequestStatus.Started) ) self.assertHasNextEvent(None) @@ -594,7 +614,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.MessageStatus.Complete) + ('FcStatus', consts.RequestStatus.Complete | consts.RequestStatus.Removed) ) self.assertHasNextEvent(None) @@ -618,7 +638,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestStarted, consts.Message.ClientGet, - ('FcStatus', consts.MessageStatus.Started) + ('FcStatus', consts.RequestStatus.Started) ) self.assertHasNextEvent(None) @@ -633,7 +653,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.MessageStatus.Error) + ('FcStatus', consts.RequestStatus.Complete | consts.RequestStatus.Error | consts.RequestStatus.Removed) ) self.assertHasNextEvent(None) @@ -658,7 +678,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestStarted, consts.Message.ClientGet, - ('FcStatus', consts.MessageStatus.Started) + ('FcStatus', consts.RequestStatus.Started) ) self.assertHasNextEvent(None) @@ -677,7 +697,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.MessageStatus.Complete) + ('FcStatus', consts.RequestStatus.Complete | consts.RequestStatus.Removed) ) self.assertHasNextEvent(None) @@ -692,7 +712,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.MessageStatus.Complete) + ('FcStatus', consts.RequestStatus.Complete) ) self.assertHasNextEvent(None) @@ -715,7 +735,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestStarted, consts.Message.ClientGet, - ('FcStatus', consts.MessageStatus.Started) + ('FcStatus', consts.RequestStatus.Started) ) self.assertHasNextEvent(None) @@ -730,7 +750,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.MessageStatus.Error) + ('FcStatus', consts.RequestStatus.Complete | consts.RequestStatus.Error | consts.RequestStatus.Removed) ) self.assertHasNextEvent(None) @@ -812,7 +832,7 @@ # status of our request should be set to removed emidiately, but it should # not be removed from the client - self.assertEqual(myRequest['FcStatus'], consts.MessageStatus.Removed) + self.assertEqual(myRequest['FcStatus'], consts.RequestStatus.Removed) self.failUnless(myIdentifier in self.fcpClient.getRequests()) # client schould send a RemovePersistentRequest @@ -873,7 +893,7 @@ ) myRequest = self.fcpClient.getRequest(myIdentifier) identifier = myRequest['Identifier'] - + self.fcpClient.removeRequest(myIdentifier) self.sendResponseMessage( 'PersistentRequestRemoved', @@ -895,7 +915,7 @@ ) # check if the client restored the request - self.assertHasNextEvent( + msg = self.assertHasNextEvent( self.fcpClient.events.RequestRestored, consts.Message.ClientGet, ('Identifier', myIdentifier) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-05 15:21:55
|
Revision: 151 http://fclient.svn.sourceforge.net/fclient/?rev=151&view=rev Author: jurner Date: 2008-02-05 07:21:54 -0800 (Tue, 05 Feb 2008) Log Message: ----------- adapt to request status flags changes Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-05 15:21:08 UTC (rev 150) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-05 15:21:54 UTC (rev 151) @@ -478,7 +478,8 @@ myIdentifier = self.fcpClient.getData( 'arbitrary-uri', ) - myRequest = self.fcpClient.getRequest(myIdentifier) + myRequest = self.fcpClient.getRequest(myIdentifier) + allRequests = self.fcpClient.getRequests() # respond to the file request self.sendResponseMessage( @@ -489,7 +490,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestStarted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Started) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) ) self.assertHasNextEvent(None) @@ -530,15 +531,44 @@ Global='false', DataLength=len(data), ) + + # client should complete and remove the request self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Complete | consts.RequestStatus.Removed), + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete | consts.RequestStatus.Removed), data=data ) + self.failIf(myIdentifier in allRequests) self.assertHasNextEvent(None) - + + # cheat a bit to test peristence == Forever (client should not remove request) + allRequests[myIdentifier] =myRequest + myRequest['Persistence'] = consts.Persistence.Forever + myRequest['FcStatus'] &= ~(consts.RequestStatus.Complete | consts.RequestStatus.Removed) + self.sendResponseMessage( + 'AllData', + data=data, + Identifier=myIdentifier, + Global='false', + DataLength=len(data), + ) + + # client should complete but not remove the request + self.assertHasNextEvent( + self.fcpClient.events.RequestCompleted, + consts.Message.ClientGet, + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete), + data=data + ) + self.failUnless(myIdentifier in allRequests) + self.assertHasNextEvent(None) + + + + + def testGetData_Failure(self): # request a arbitrary file @@ -546,6 +576,7 @@ 'arbitrary-uri', ) myRequest = self.fcpClient.getRequest(myIdentifier) + allRequests = self.fcpClient.getRequests() # respond to the file request self.sendResponseMessage( @@ -556,7 +587,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestStarted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Started) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) ) self.assertHasNextEvent(None) @@ -568,14 +599,40 @@ Global='false', # blah.. more here ) + + # client should complete request and remove it self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Complete | consts.RequestStatus.Error | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete | consts.RequestStatus.Error | consts.RequestStatus.Removed) ) self.assertHasNextEvent(None) + #return + + # cheat a bit to test peristence == Forever (client should not remove request) + + allRequests[myIdentifier] =myRequest + myRequest['Persistence'] = consts.Persistence.Forever + myRequest['FcStatus'] &= ~(consts.RequestStatus.Error | consts.RequestStatus.Removed) + self.sendResponseMessage( + 'GetFailed', + Code='28', # All data not found + Identifier=myIdentifier, + Global='false', + # blah.. more here + ) + + # client should complete but not remove the request + self.assertHasNextEvent( + self.fcpClient.events.RequestFailed, + consts.Message.ClientGet, + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete | consts.RequestStatus.Error), + ) + self.failUnless(myIdentifier in allRequests) + self.assertHasNextEvent(None) + def testGetFile_Success(self): # request a arbitrary file @@ -584,6 +641,8 @@ 'arbitryry.txt' ) myRequest = self.fcpClient.getRequest(myIdentifier) + allRequests = self.fcpClient.getRequests() + self.assertHasNextMessage(consts.Message.ClientGet) # respond to the file request @@ -595,7 +654,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestStarted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Started) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) ) self.assertHasNextEvent(None) @@ -614,8 +673,9 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Complete | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete | consts.RequestStatus.Removed) ) + self.failIf(myIdentifier in allRequests) self.assertHasNextEvent(None) @@ -627,6 +687,8 @@ 'arbitryry.txt' ) myRequest = self.fcpClient.getRequest(myIdentifier) + allRequests = self.fcpClient.getRequests() + self.assertHasNextMessage(consts.Message.ClientGet) # respond to the file request @@ -638,7 +700,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestStarted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Started) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) ) self.assertHasNextEvent(None) @@ -653,8 +715,9 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Complete | consts.RequestStatus.Error | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete | consts.RequestStatus.Error | consts.RequestStatus.Removed) ) + self.failIf(myIdentifier in allRequests) self.assertHasNextEvent(None) @@ -667,6 +730,8 @@ persistence=consts.Persistence.Forever, # cheat a bit, so we can test multiple cases ) myRequest = self.fcpClient.getRequest(myIdentifier) + allRequests = self.fcpClient.getRequests() + self.assertHasNextMessage(consts.Message.ClientGet) # respond to the file request @@ -678,7 +743,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestStarted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Started) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) ) self.assertHasNextEvent(None) @@ -697,11 +762,13 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Complete | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete) ) + self.failIf(myIdentifier not in allRequests) self.assertHasNextEvent(None) # test specdial case where ProtocolError.TooBig is handled as success + myRequest['FcStatus'] &= ~(consts.RequestStatus.Complete) self.sendResponseMessage( 'GetFailed', Code='21', # Too big @@ -712,11 +779,18 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Complete) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete) ) self.assertHasNextEvent(None) + + # cheat a bit to test persistence == Connection + myRequest['Persistence'] = consts.Persistence.Connection + myRequest['FcStatus'] = consts.RequestStatus.Started + + ########################################### + ########################################### - + def testGetKeyInfo_Failure(self): # request a arbitrary file @@ -735,7 +809,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestStarted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Started) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) ) self.assertHasNextEvent(None) @@ -750,7 +824,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Complete | consts.RequestStatus.Error | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete | consts.RequestStatus.Error | consts.RequestStatus.Removed) ) self.assertHasNextEvent(None) @@ -892,12 +966,12 @@ 'arbitryry.txt' ) myRequest = self.fcpClient.getRequest(myIdentifier) - identifier = myRequest['Identifier'] - + allRequests = self.fcpClient.getRequests() + self.fcpClient.removeRequest(myIdentifier) self.sendResponseMessage( 'PersistentRequestRemoved', - Identifier=identifier, + Identifier=myIdentifier, ) self.messages = [] self.events = [] @@ -905,7 +979,7 @@ # throw a PersistentGet at the client with the identifier we hacked self.sendResponseMessage( 'PersistentGet', - Identifier=identifier, + Identifier=myIdentifier, Global='false', ReturnType='disk', Verbosity='1', @@ -918,9 +992,11 @@ msg = self.assertHasNextEvent( self.fcpClient.events.RequestRestored, consts.Message.ClientGet, - ('Identifier', myIdentifier) + ('Identifier', myIdentifier), + ('FcStatus', consts.RequestStatus.Started), # no RequestStatus.Pending flag should be set here ) + self.failUnless(myIdentifier in allRequests) self.assertHasNextEvent(None) #*********************************************************************************** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-05 16:00:10
|
Revision: 154 http://fclient.svn.sourceforge.net/fclient/?rev=154&view=rev Author: jurner Date: 2008-02-05 08:00:15 -0800 (Tue, 05 Feb 2008) Log Message: ----------- adapt to request status flag changes Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-05 15:59:49 UTC (rev 153) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-05 16:00:15 UTC (rev 154) @@ -604,7 +604,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete | consts.RequestStatus.Error | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Error | consts.RequestStatus.Removed) ) self.assertHasNextEvent(None) @@ -627,7 +627,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete | consts.RequestStatus.Error), + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Error), ) self.failUnless(myIdentifier in allRequests) self.assertHasNextEvent(None) @@ -715,7 +715,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete | consts.RequestStatus.Error | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Error | consts.RequestStatus.Removed) ) self.failIf(myIdentifier in allRequests) self.assertHasNextEvent(None) @@ -824,7 +824,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete | consts.RequestStatus.Error | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Error | consts.RequestStatus.Removed) ) self.assertHasNextEvent(None) @@ -906,7 +906,7 @@ # status of our request should be set to removed emidiately, but it should # not be removed from the client - self.assertEqual(myRequest['FcStatus'], consts.RequestStatus.Removed) + self.assertEqual(myRequest['FcStatus'], consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Removed) self.failUnless(myIdentifier in self.fcpClient.getRequests()) # client schould send a RemovePersistentRequest This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-06 10:54:21
|
Revision: 158 http://fclient.svn.sourceforge.net/fclient/?rev=158&view=rev Author: jurner Date: 2008-02-06 02:54:27 -0800 (Wed, 06 Feb 2008) Log Message: ----------- more fine grained status and type flags for requests Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-06 10:54:05 UTC (rev 157) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-06 10:54:27 UTC (rev 158) @@ -2,6 +2,7 @@ from __future__ import with_statement import os, sys +import copy import socket import tempfile import time @@ -60,6 +61,8 @@ self.messages.append(self.fcpClient.Message.fromSocket(s)) def _captureEventsFromClient(self, event, msg): + # have to copy message here, to get exact state + msg = copy.deepcopy(msg) self.events.append( (event, msg) ) def connectClient(self): @@ -536,17 +539,24 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete | consts.RequestStatus.Removed), + ('FcStatus', consts.RequestStatus.Pending | + consts.RequestStatus.Started | + consts.RequestStatus.Success | + consts.RequestStatus.Removed), data=data ) self.failIf(myIdentifier in allRequests) + self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) # cheat a bit to test peristence == Forever (client should not remove request) allRequests[myIdentifier] =myRequest myRequest['Persistence'] = consts.Persistence.Forever - myRequest['FcStatus'] &= ~(consts.RequestStatus.Complete | consts.RequestStatus.Removed) + myRequest['FcStatus'] &= ~(consts.RequestStatus.Success | + consts.RequestStatus.Removed | + consts.RequestStatus.Completed + ) self.sendResponseMessage( 'AllData', data=data, @@ -559,16 +569,16 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete), + ('FcStatus', consts.RequestStatus.Pending | + consts.RequestStatus.Started | + consts.RequestStatus.Success), data=data ) self.failUnless(myIdentifier in allRequests) + self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) - - - def testGetData_Failure(self): # request a arbitrary file @@ -604,8 +614,12 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Error | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | + consts.RequestStatus.Started | + consts.RequestStatus.Error | + consts.RequestStatus.Removed) ) + self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) #return @@ -614,7 +628,9 @@ allRequests[myIdentifier] =myRequest myRequest['Persistence'] = consts.Persistence.Forever - myRequest['FcStatus'] &= ~(consts.RequestStatus.Error | consts.RequestStatus.Removed) + myRequest['FcStatus'] &= ~(consts.RequestStatus.Error | + consts.RequestStatus.Removed | + consts.RequestStatus.Completed) self.sendResponseMessage( 'GetFailed', Code='28', # All data not found @@ -627,9 +643,13 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Error), + ('FcStatus', consts.RequestStatus.Pending | + consts.RequestStatus.Started | + consts.RequestStatus.Error + ), ) self.failUnless(myIdentifier in allRequests) + self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -673,9 +693,10 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Success | consts.RequestStatus.Removed) ) self.failIf(myIdentifier in allRequests) + self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -718,10 +739,10 @@ ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Error | consts.RequestStatus.Removed) ) self.failIf(myIdentifier in allRequests) + self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) + - - def testGetKeyInfo_Success(self): # request a arbitrary uri @@ -762,13 +783,14 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete) + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Success) ) self.failIf(myIdentifier not in allRequests) + self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) # test specdial case where ProtocolError.TooBig is handled as success - myRequest['FcStatus'] &= ~(consts.RequestStatus.Complete) + myRequest['FcStatus'] &= ~(consts.RequestStatus.Success) self.sendResponseMessage( 'GetFailed', Code='21', # Too big @@ -779,8 +801,13 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Complete) + ('FcStatus', consts.RequestStatus.Pending | + consts.RequestStatus.Started | + consts.RequestStatus.Success | + consts.RequestStatus.Completed + ) ) + self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) # cheat a bit to test persistence == Connection @@ -826,6 +853,7 @@ consts.Message.ClientGet, ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Error | consts.RequestStatus.Removed) ) + self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) #*********************************************************************************** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-06 14:57:29
|
Revision: 166 http://fclient.svn.sourceforge.net/fclient/?rev=166&view=rev Author: jurner Date: 2008-02-06 06:57:28 -0800 (Wed, 06 Feb 2008) Log Message: ----------- distinguish Removed from RemovedFromQueue Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-06 14:57:08 UTC (rev 165) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-06 14:57:28 UTC (rev 166) @@ -542,7 +542,8 @@ ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Success | - consts.RequestStatus.Removed), + consts.RequestStatus.RemovedFromQueue + ), data=data ) self.failIf(myIdentifier in allRequests) @@ -554,8 +555,8 @@ allRequests[myIdentifier] =myRequest myRequest['Persistence'] = consts.Persistence.Forever myRequest['FcStatus'] &= ~(consts.RequestStatus.Success | - consts.RequestStatus.Removed | - consts.RequestStatus.Completed + consts.RequestStatus.Completed | + consts.RequestStatus.RemovedFromQueue ) self.sendResponseMessage( 'AllData', @@ -617,7 +618,8 @@ ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Error | - consts.RequestStatus.Removed) + consts.RequestStatus.RemovedFromQueue + ) ) self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -629,8 +631,9 @@ allRequests[myIdentifier] =myRequest myRequest['Persistence'] = consts.Persistence.Forever myRequest['FcStatus'] &= ~(consts.RequestStatus.Error | - consts.RequestStatus.Removed | - consts.RequestStatus.Completed) + consts.RequestStatus.Completed | + consts.RequestStatus.RemovedFromQueue + ) self.sendResponseMessage( 'GetFailed', Code='28', # All data not found @@ -693,7 +696,11 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Success | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | + consts.RequestStatus.Started | + consts.RequestStatus.Success | + consts.RequestStatus.RemovedFromQueue + ) ) self.failIf(myIdentifier in allRequests) self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) @@ -736,7 +743,11 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Error | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | + consts.RequestStatus.Started | + consts.RequestStatus.Error | + consts.RequestStatus.RemovedFromQueue + ) ) self.failIf(myIdentifier in allRequests) self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) @@ -748,7 +759,6 @@ # request a arbitrary uri myIdentifier = self.fcpClient.getKeyInfo( 'arbitrary-uri', - persistence=consts.Persistence.Forever, # cheat a bit, so we can test multiple cases ) myRequest = self.fcpClient.getRequest(myIdentifier) allRequests = self.fcpClient.getRequests() @@ -783,15 +793,44 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Success) + ('FcStatus', consts.RequestStatus.Pending | + consts.RequestStatus.Started | + consts.RequestStatus.Success | + consts.RequestStatus.RemovedFromQueue + ) ) - self.failIf(myIdentifier not in allRequests) + self.failIf(myIdentifier in allRequests) self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) + + def testGetKeyInfo_TooBig(self): + # test specdial case where ProtocolError.TooBig is handled as success - myRequest['FcStatus'] &= ~(consts.RequestStatus.Success) + # request a arbitrary uri + myIdentifier = self.fcpClient.getKeyInfo( + 'arbitrary-uri', + ) + myRequest = self.fcpClient.getRequest(myIdentifier) + allRequests = self.fcpClient.getRequests() + + self.assertHasNextMessage(consts.Message.ClientGet) + + # respond to the file request self.sendResponseMessage( + 'PersistentGet', + Started='false', + **myRequest.params + ) + self.assertHasNextEvent( + self.fcpClient.events.RequestStarted, + consts.Message.ClientGet, + ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) + ) + self.assertHasNextEvent(None) + + # finalize request + self.sendResponseMessage( 'GetFailed', Code='21', # Too big Identifier=myIdentifier, @@ -803,8 +842,8 @@ consts.Message.ClientGet, ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | - consts.RequestStatus.Success | - consts.RequestStatus.Completed + consts.RequestStatus.Success | + consts.RequestStatus.RemovedFromQueue ) ) self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) @@ -814,10 +853,7 @@ myRequest['Persistence'] = consts.Persistence.Connection myRequest['FcStatus'] = consts.RequestStatus.Started - ########################################### - ########################################### - - + def testGetKeyInfo_Failure(self): # request a arbitrary file @@ -851,7 +887,11 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Error | consts.RequestStatus.Removed) + ('FcStatus', consts.RequestStatus.Pending | + consts.RequestStatus.Started | + consts.RequestStatus.Error | + consts.RequestStatus.RemovedFromQueue + ) ) self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -934,7 +974,10 @@ # status of our request should be set to removed emidiately, but it should # not be removed from the client - self.assertEqual(myRequest['FcStatus'], consts.RequestStatus.Pending | consts.RequestStatus.Started | consts.RequestStatus.Removed) + self.assertEqual(myRequest['FcStatus'], consts.RequestStatus.Pending | + consts.RequestStatus.Started | + consts.RequestStatus.Removed + ) self.failUnless(myIdentifier in self.fcpClient.getRequests()) # client schould send a RemovePersistentRequest @@ -947,9 +990,9 @@ ) # now the request should have been removed + self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.RemovedFromQueue) + self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) self.failIf(self.fcpClient.getRequests()) - - # client never sends an event here self.assertHasNextEvent(None) #*********************************************************************************** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 08:38:22
|
Revision: 175 http://fclient.svn.sourceforge.net/fclient/?rev=175&view=rev Author: jurner Date: 2008-02-08 00:38:28 -0800 (Fri, 08 Feb 2008) Log Message: ----------- adapt Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-08 08:37:46 UTC (rev 174) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-08 08:38:28 UTC (rev 175) @@ -472,7 +472,7 @@ self.failUnless(self.fcpClient.getRequests() ) myRequest = self.fcpClient.getRequest(myIdentifier) self.assertEqual(myIdentifier, myRequest['Identifier']) - self.assertEqual(myRequest['FcStatus'], consts.RequestStatus.Pending) + self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Pending) def testGetData_Success(self): @@ -490,13 +490,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) - ) - self.assertHasNextEvent(None) - + # simulate a progress self.sendResponseMessage( 'SimpleProgress', @@ -539,22 +533,21 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Success | consts.RequestStatus.RemovedFromQueue ), data=data ) self.failIf(myIdentifier in allRequests) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) # cheat a bit to test peristence == Forever (client should not remove request) allRequests[myIdentifier] =myRequest myRequest['Persistence'] = consts.Persistence.Forever - myRequest['FcStatus'] &= ~(consts.RequestStatus.Success | + myRequest['FcRequestStatus'] &= ~(consts.RequestStatus.Success | consts.RequestStatus.Completed | consts.RequestStatus.RemovedFromQueue ) @@ -570,13 +563,12 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Success), data=data ) self.failUnless(myIdentifier in allRequests) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -595,13 +587,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) - ) - self.assertHasNextEvent(None) - + # finalize request self.sendResponseMessage( 'GetFailed', @@ -615,13 +601,12 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Error | consts.RequestStatus.RemovedFromQueue ) ) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) #return @@ -630,7 +615,7 @@ allRequests[myIdentifier] =myRequest myRequest['Persistence'] = consts.Persistence.Forever - myRequest['FcStatus'] &= ~(consts.RequestStatus.Error | + myRequest['FcRequestStatus'] &= ~(consts.RequestStatus.Error | consts.RequestStatus.Completed | consts.RequestStatus.RemovedFromQueue ) @@ -646,13 +631,12 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Error ), ) self.failUnless(myIdentifier in allRequests) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -674,13 +658,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) - ) - self.assertHasNextEvent(None) - + # finalize request data = 'foo' params = { @@ -696,14 +674,13 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Success | consts.RequestStatus.RemovedFromQueue ) ) self.failIf(myIdentifier in allRequests) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -725,13 +702,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) - ) - self.assertHasNextEvent(None) - + # finalize request self.sendResponseMessage( 'GetFailed', @@ -743,14 +714,13 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Error | consts.RequestStatus.RemovedFromQueue ) ) self.failIf(myIdentifier in allRequests) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -771,13 +741,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) - ) - self.assertHasNextEvent(None) - + # finalize request data = 'foo' params = { @@ -793,14 +757,13 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Success | consts.RequestStatus.RemovedFromQueue ) ) self.failIf(myIdentifier in allRequests) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -822,13 +785,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) - ) - self.assertHasNextEvent(None) - + # finalize request self.sendResponseMessage( 'GetFailed', @@ -840,19 +797,15 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Success | consts.RequestStatus.RemovedFromQueue ) ) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) - # cheat a bit to test persistence == Connection - myRequest['Persistence'] = consts.Persistence.Connection - myRequest['FcStatus'] = consts.RequestStatus.Started - + def testGetKeyInfo_Failure(self): @@ -869,13 +822,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | consts.RequestStatus.Started) - ) - self.assertHasNextEvent(None) - + # finalize request self.sendResponseMessage( 'GetFailed', @@ -887,13 +834,12 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcStatus', consts.RequestStatus.Pending | - consts.RequestStatus.Started | + ('FcRequestStatus', consts.RequestStatus.Pending | consts.RequestStatus.Error | consts.RequestStatus.RemovedFromQueue ) ) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) #*********************************************************************************** @@ -928,8 +874,7 @@ Started='false', **myRequest.params ) - self.assertHasNextEvent(self.fcpClient.events.RequestStarted ) - + # test modify persistent user data self.fcpClient.modifyRequest(myIdentifier, persistentUserData='bar', priorityClass=consts.Priority.High) msg = self.assertHasNextMessage(consts.Message.ModifyPersistentRequest) @@ -974,8 +919,7 @@ # status of our request should be set to removed emidiately, but it should # not be removed from the client - self.assertEqual(myRequest['FcStatus'], consts.RequestStatus.Pending | - consts.RequestStatus.Started | + self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Pending | consts.RequestStatus.Removed ) self.failUnless(myIdentifier in self.fcpClient.getRequests()) @@ -990,8 +934,8 @@ ) # now the request should have been removed - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.RemovedFromQueue) - self.failUnless(myRequest['FcStatus'] & consts.RequestStatus.Completed) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.RemovedFromQueue) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.failIf(self.fcpClient.getRequests()) self.assertHasNextEvent(None) @@ -1064,7 +1008,7 @@ self.fcpClient.events.RequestRestored, consts.Message.ClientGet, ('Identifier', myIdentifier), - ('FcStatus', consts.RequestStatus.Started), # no RequestStatus.Pending flag should be set here + ('FcRequestStatus', consts.RequestStatus.Null), # no RequestStatus.Pending flag should be set here ) self.failUnless(myIdentifier in allRequests) @@ -1158,14 +1102,6 @@ **msg.params ) - # check if client send expected events - self.assertHasNextEvent( - self.fcpClient.events.RequestStarted, - consts.Message.ClientGet, - ('Identifier', myIdentifier) - ) - self.assertHasNextEvent(None) - requests = self.fcpClient.getRequests() self.assertEqual(len(requests), 1) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 13:36:56
|
Revision: 185 http://fclient.svn.sourceforge.net/fclient/?rev=185&view=rev Author: jurner Date: 2008-02-08 05:37:01 -0800 (Fri, 08 Feb 2008) Log Message: ----------- fix Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-08 13:35:24 UTC (rev 184) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-08 13:37:01 UTC (rev 185) @@ -161,6 +161,7 @@ if messageName is None: self.failIf(self.messages) else: + self.failUnless(self.messages) msg = self.messages.pop(0) self.assertEqual(msg.name, messageName) if param1 is not None: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 18:54:32
|
Revision: 190 http://fclient.svn.sourceforge.net/fclient/?rev=190&view=rev Author: jurner Date: 2008-02-08 10:54:35 -0800 (Fri, 08 Feb 2008) Log Message: ----------- added test for gen keypair and subscribe usk Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-08 18:53:33 UTC (rev 189) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-08 18:54:35 UTC (rev 190) @@ -473,7 +473,7 @@ self.failUnless(self.fcpClient.getRequests() ) myRequest = self.fcpClient.getRequest(myIdentifier) self.assertEqual(myIdentifier, myRequest['Identifier']) - self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Pending) + self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Null) def testGetData_Success(self): @@ -534,7 +534,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Pending | + ('FcRequestStatus', consts.RequestStatus.Null | consts.RequestStatus.Success | consts.RequestStatus.RemovedFromQueue ), @@ -542,8 +542,7 @@ ) self.failIf(myIdentifier in allRequests) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) - self.assertHasNextEvent(None) - + # cheat a bit to test peristence == Forever (client should not remove request) allRequests[myIdentifier] =myRequest @@ -564,7 +563,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Pending | + ('FcRequestStatus', consts.RequestStatus.Null | consts.RequestStatus.Success), data=data ) @@ -602,7 +601,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Pending | + ('FcRequestStatus', consts.RequestStatus.Null | consts.RequestStatus.Error | consts.RequestStatus.RemovedFromQueue ) @@ -632,7 +631,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Pending | + ('FcRequestStatus', consts.RequestStatus.Null | consts.RequestStatus.Error ), ) @@ -675,7 +674,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Pending | + ('FcRequestStatus', consts.RequestStatus.Null | consts.RequestStatus.Success | consts.RequestStatus.RemovedFromQueue ) @@ -715,7 +714,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Pending | + ('FcRequestStatus', consts.RequestStatus.Null | consts.RequestStatus.Error | consts.RequestStatus.RemovedFromQueue ) @@ -758,7 +757,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Pending | + ('FcRequestStatus', consts.RequestStatus.Null | consts.RequestStatus.Success | consts.RequestStatus.RemovedFromQueue ) @@ -798,7 +797,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Pending | + ('FcRequestStatus', consts.RequestStatus.Null | consts.RequestStatus.Success | consts.RequestStatus.RemovedFromQueue ) @@ -835,7 +834,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Pending | + ('FcRequestStatus', consts.RequestStatus.Null | consts.RequestStatus.Error | consts.RequestStatus.RemovedFromQueue ) @@ -920,7 +919,7 @@ # status of our request should be set to removed emidiately, but it should # not be removed from the client - self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Pending | + self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Null | consts.RequestStatus.Removed ) self.failUnless(myIdentifier in self.fcpClient.getRequests()) @@ -1009,7 +1008,7 @@ self.fcpClient.events.RequestRestored, consts.Message.ClientGet, ('Identifier', myIdentifier), - ('FcRequestStatus', consts.RequestStatus.Null), # no RequestStatus.Pending flag should be set here + ('FcRequestStatus', consts.RequestStatus.Restored), # no RequestStatus.Pending flag should be set here ) self.failUnless(myIdentifier in allRequests) @@ -1260,14 +1259,95 @@ #*********************************************************************************** # #*********************************************************************************** -#TODO: class TestSSKKeypair(BaseTestConnectedClient): +#TODO: class TestSSKKeypair(BaseTestConnectedClient): +class TestGenerateKeypair(BaseTestConnectedClient): + + def testGeberateSSKKeypair(self): + myIdentifier = self.fcpClient.generateKeypair(consts.KeyType.SSK) + myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() + + self.sendResponseMessage( + 'SSKKeypair', + Identifier=myIdentifier, + RequestURI='SSK@public', + InsertURI='SSK@private', + ) + + msg = self.assertHasNextEvent( + self.fcpClient.events.KeypairGenerated, + consts.Message.GenerateSSK, + ('Identifier', myIdentifier), + ('FcPublicKey','SSK@public'), + ('FcPrivateKey','SSK@private'), + ('FcRequestStatus', consts.RequestStatus.Success | + consts.RequestStatus.RemovedFromQueue + ), + ) + self.assertHasNextEvent(None) + self.failIf(myIdentifier in requestsAll) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + + + def testGeberateUSKKeypair(self): + myIdentifier = self.fcpClient.generateKeypair(consts.KeyType.USK) + myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() + + self.sendResponseMessage( + 'SSKKeypair', + Identifier=myIdentifier, + RequestURI='SSK@public', + InsertURI='SSK@private', + ) + + msg = self.assertHasNextEvent( + self.fcpClient.events.KeypairGenerated, + consts.Message.GenerateSSK, + ('Identifier', myIdentifier), + ('FcPublicKey','USK@public'), + ('FcPrivateKey','USK@private'), + ('FcRequestStatus', consts.RequestStatus.Success | + consts.RequestStatus.RemovedFromQueue + ), + ) + self.assertHasNextEvent(None) + self.failIf(myIdentifier in requestsAll) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + #*********************************************************************************** # #*********************************************************************************** -#TODO: class TestSubscribeUSK(BaseTestConnectedClient): +class TestSubscribeUSK(BaseTestConnectedClient): + def testSubscribe(self): + + myIdentifier = self.fcpClient.subscribeUSK('arbitrary') + myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() + + self.failUnless(myIdentifier in requestsAll) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + + self.sendResponseMessage( + 'SubscribedUSKUpdate', + Identifier=myIdentifier, + Edition=99, + URI='arbitryry/99/', + ) + + msg = self.assertHasNextEvent( + self.fcpClient.events.USKUpdated, + consts.Message.SubscribedUSKUpdate, + ('Identifier', myIdentifier), + ('Edition', 99), + ('URI', 'arbitryry/99/'), + ) + self.assertHasNextEvent(None) + + #********************************************************************************* # @@ -1282,6 +1362,9 @@ TestRestoreRequests, TestDDA, TestCollisions, + + TestGenerateKeypair, + TestSubscribeUSK, ) suite = unittest.TestSuite() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-08 23:41:32
|
Revision: 193 http://fclient.svn.sourceforge.net/fclient/?rev=193&view=rev Author: jurner Date: 2008-02-08 15:41:20 -0800 (Fri, 08 Feb 2008) Log Message: ----------- added test for removeRequest() Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-08 23:41:00 UTC (rev 192) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-08 23:41:20 UTC (rev 193) @@ -856,6 +856,7 @@ class TestRequests(BaseTestConnectedClient): + def testModifyRequest(self): # request a arbitrary file @@ -894,7 +895,7 @@ self.assertHasNextEvent(None) - def testRemoveRequest(self): + def testRemoveRequest_NonPersistent(self): # request a file myIdentifier = self.fcpClient.getFile( @@ -917,6 +918,43 @@ # now cancel request self.fcpClient.removeRequest(myIdentifier) + # of our request should be removed emidiately, + self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Null | + consts.RequestStatus.Removed | + consts.RequestStatus.Completed | + consts.RequestStatus.RemovedFromQueue + ) + self.failIf(myIdentifier in self.fcpClient.getRequests()) + + # now the request should have been removed + self.failIf(self.fcpClient.getRequests()) + self.assertHasNextEvent(None) + + + def testRemoveRequest_persistent(self): + + # request a file + myIdentifier = self.fcpClient.getFile( + 'arbitrary-uri', + 'arbitrary.txt', + persistence=consts.Persistence.Reboot, + ) + myRequest = self.fcpClient.getRequest(myIdentifier) + + # respond to the file request + self.sendResponseMessage( + 'PersistentGet', + Started='false', + **myRequest.params + ) + + # ignore events and messages so far + self.events = [] + self.messages = [] + + # now cancel request + self.fcpClient.removeRequest(myIdentifier) + # status of our request should be set to removed emidiately, but it should # not be removed from the client self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Null | @@ -939,6 +977,59 @@ self.failIf(self.fcpClient.getRequests()) self.assertHasNextEvent(None) + + + def testResendRequest_NonPersistent(self): + + myIdentifier = self.fcpClient.getData('any-key') + myRequest = self.fcpClient.getRequest(myIdentifier) + allRequests = self.fcpClient.getRequests() + self.assertHasNextMessage(consts.Message.ClientGet) + + newIdentifier = self.fcpClient.resendRequest(myRequest) + + # client should remove old request emidiately + self.failIf(myIdentifier == newIdentifier) + self.failIf(myIdentifier in allRequests) + self.failUnless(newIdentifier in allRequests) + + self.assertHasNextMessage(consts.Message.ClientGet) + + + + def testResendRequest_Persistent(self): + + myIdentifier = self.fcpClient.getData('any-key', persistence=consts.Persistence.Reboot) + myRequest = self.fcpClient.getRequest(myIdentifier) + allRequests = self.fcpClient.getRequests() + self.assertHasNextMessage(consts.Message.ClientGet) + + newIdentifier = self.fcpClient.resendRequest(myRequest) + self.failIf(myIdentifier == newIdentifier) + self.failUnless(newIdentifier in allRequests) + + # client should remove request from nodes queue + self.assertHasNextMessage( + consts.Message.RemovePersistentRequest, + ('Identifier', myIdentifier) + ) + self.assertHasNextMessage( + consts.Message.ClientGet, + ('Identifier', newIdentifier) + ) + self.sendResponseMessage( + 'PersistentRequestRemoved', + Identifier=myIdentifier, + ) + + self.failUnless(newIdentifier in allRequests) + self.failIf(myIdentifier in allRequests) + + + + + + #*********************************************************************************** # #*********************************************************************************** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-09 09:34:51
|
Revision: 195 http://fclient.svn.sourceforge.net/fclient/?rev=195&view=rev Author: jurner Date: 2008-02-09 01:34:57 -0800 (Sat, 09 Feb 2008) Log Message: ----------- added plugin message test cases Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-09 09:34:37 UTC (rev 194) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-09 09:34:57 UTC (rev 195) @@ -483,7 +483,7 @@ 'arbitrary-uri', ) myRequest = self.fcpClient.getRequest(myIdentifier) - allRequests = self.fcpClient.getRequests() + requestsAll = self.fcpClient.getRequests() # respond to the file request self.sendResponseMessage( @@ -534,18 +534,17 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Null | - consts.RequestStatus.Success | - consts.RequestStatus.RemovedFromQueue - ), + ('FcRequestStatus', consts.RequestStatus.Success | + consts.RequestStatus.RemovedFromQueue + ), data=data ) - self.failIf(myIdentifier in allRequests) + self.failIf(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) # cheat a bit to test peristence == Forever (client should not remove request) - allRequests[myIdentifier] =myRequest + requestsAll[myIdentifier] =myRequest myRequest['Persistence'] = consts.Persistence.Forever myRequest['FcRequestStatus'] &= ~(consts.RequestStatus.Success | consts.RequestStatus.Completed | @@ -563,11 +562,10 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Null | - consts.RequestStatus.Success), + ('FcRequestStatus', consts.RequestStatus.Success), data=data ) - self.failUnless(myIdentifier in allRequests) + self.failUnless(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -579,7 +577,7 @@ 'arbitrary-uri', ) myRequest = self.fcpClient.getRequest(myIdentifier) - allRequests = self.fcpClient.getRequests() + requestsAll = self.fcpClient.getRequests() # respond to the file request self.sendResponseMessage( @@ -601,10 +599,9 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Null | - consts.RequestStatus.Error | - consts.RequestStatus.RemovedFromQueue - ) + ('FcRequestStatus', consts.RequestStatus.Error | + consts.RequestStatus.RemovedFromQueue + ), ) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -613,7 +610,7 @@ # cheat a bit to test peristence == Forever (client should not remove request) - allRequests[myIdentifier] =myRequest + requestsAll[myIdentifier] =myRequest myRequest['Persistence'] = consts.Persistence.Forever myRequest['FcRequestStatus'] &= ~(consts.RequestStatus.Error | consts.RequestStatus.Completed | @@ -631,11 +628,9 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Null | - consts.RequestStatus.Error - ), + ('FcRequestStatus', consts.RequestStatus.Error), ) - self.failUnless(myIdentifier in allRequests) + self.failUnless(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -648,7 +643,7 @@ 'arbitryry.txt' ) myRequest = self.fcpClient.getRequest(myIdentifier) - allRequests = self.fcpClient.getRequests() + requestsAll = self.fcpClient.getRequests() self.assertHasNextMessage(consts.Message.ClientGet) @@ -674,12 +669,11 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Null | - consts.RequestStatus.Success | - consts.RequestStatus.RemovedFromQueue - ) + ('FcRequestStatus', consts.RequestStatus.Success | + consts.RequestStatus.RemovedFromQueue + ), ) - self.failIf(myIdentifier in allRequests) + self.failIf(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -692,7 +686,7 @@ 'arbitryry.txt' ) myRequest = self.fcpClient.getRequest(myIdentifier) - allRequests = self.fcpClient.getRequests() + requestsAll = self.fcpClient.getRequests() self.assertHasNextMessage(consts.Message.ClientGet) @@ -714,12 +708,11 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Null | - consts.RequestStatus.Error | - consts.RequestStatus.RemovedFromQueue - ) + ('FcRequestStatus', consts.RequestStatus.Error | + consts.RequestStatus.RemovedFromQueue + ), ) - self.failIf(myIdentifier in allRequests) + self.failIf(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -731,7 +724,7 @@ 'arbitrary-uri', ) myRequest = self.fcpClient.getRequest(myIdentifier) - allRequests = self.fcpClient.getRequests() + requestsAll = self.fcpClient.getRequests() self.assertHasNextMessage(consts.Message.ClientGet) @@ -757,12 +750,11 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Null | - consts.RequestStatus.Success | - consts.RequestStatus.RemovedFromQueue - ) + ('FcRequestStatus', consts.RequestStatus.Success | + consts.RequestStatus.RemovedFromQueue + ), ) - self.failIf(myIdentifier in allRequests) + self.failIf(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -775,7 +767,7 @@ 'arbitrary-uri', ) myRequest = self.fcpClient.getRequest(myIdentifier) - allRequests = self.fcpClient.getRequests() + requestsAll = self.fcpClient.getRequests() self.assertHasNextMessage(consts.Message.ClientGet) @@ -797,10 +789,9 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Null | - consts.RequestStatus.Success | - consts.RequestStatus.RemovedFromQueue - ) + ('FcRequestStatus', consts.RequestStatus.Success | + consts.RequestStatus.RemovedFromQueue + ), ) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -834,10 +825,9 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Null | - consts.RequestStatus.Error | - consts.RequestStatus.RemovedFromQueue - ) + ('FcRequestStatus', consts.RequestStatus.Error | + consts.RequestStatus.RemovedFromQueue + ), ) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) @@ -850,10 +840,6 @@ #*********************************************************************************** # #*********************************************************************************** -#TODO: testGetRequest() -#TODO: testGetRequest() -#TODO: testResendRequest() - class TestRequests(BaseTestConnectedClient): @@ -919,14 +905,20 @@ self.fcpClient.removeRequest(myIdentifier) # of our request should be removed emidiately, - self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Null | - consts.RequestStatus.Removed | + self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Removed | consts.RequestStatus.Completed | consts.RequestStatus.RemovedFromQueue ) self.failIf(myIdentifier in self.fcpClient.getRequests()) # now the request should have been removed + self.assertHasNextEvent( + self.fcpClient.events.RequestRemoved, + consts.Message.ClientGet, + ('FcRequestStatus', consts.RequestStatus.Removed | + consts.RequestStatus.RemovedFromQueue + ), + ) self.failIf(self.fcpClient.getRequests()) self.assertHasNextEvent(None) @@ -957,9 +949,7 @@ # status of our request should be set to removed emidiately, but it should # not be removed from the client - self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Null | - consts.RequestStatus.Removed - ) + self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Removed) self.failUnless(myIdentifier in self.fcpClient.getRequests()) # client schould send a RemovePersistentRequest @@ -974,6 +964,14 @@ # now the request should have been removed self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.RemovedFromQueue) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + self.assertHasNextEvent( + self.fcpClient.events.RequestRemoved, + consts.Message.ClientGet, + ('FcRequestStatus', consts.RequestStatus.Removed | + consts.RequestStatus.RemovedFromQueue + ), + ) + self.failIf(self.fcpClient.getRequests()) self.assertHasNextEvent(None) @@ -983,30 +981,36 @@ myIdentifier = self.fcpClient.getData('any-key') myRequest = self.fcpClient.getRequest(myIdentifier) - allRequests = self.fcpClient.getRequests() + requestsAll = self.fcpClient.getRequests() self.assertHasNextMessage(consts.Message.ClientGet) newIdentifier = self.fcpClient.resendRequest(myRequest) # client should remove old request emidiately self.failIf(myIdentifier == newIdentifier) - self.failIf(myIdentifier in allRequests) - self.failUnless(newIdentifier in allRequests) - + self.failIf(myIdentifier in requestsAll) + self.failUnless(newIdentifier in requestsAll) + self.assertHasNextEvent( + self.fcpClient.events.RequestRemoved, + consts.Message.ClientGet, + ('FcRequestStatus', consts.RequestStatus.Removed | + consts.RequestStatus.RemovedFromQueue + ), + ) + self.assertHasNextMessage(consts.Message.ClientGet) - - + def testResendRequest_Persistent(self): myIdentifier = self.fcpClient.getData('any-key', persistence=consts.Persistence.Reboot) myRequest = self.fcpClient.getRequest(myIdentifier) - allRequests = self.fcpClient.getRequests() + requestsAll = self.fcpClient.getRequests() self.assertHasNextMessage(consts.Message.ClientGet) newIdentifier = self.fcpClient.resendRequest(myRequest) self.failIf(myIdentifier == newIdentifier) - self.failUnless(newIdentifier in allRequests) + self.failUnless(newIdentifier in requestsAll) # client should remove request from nodes queue self.assertHasNextMessage( @@ -1021,14 +1025,17 @@ 'PersistentRequestRemoved', Identifier=myIdentifier, ) + self.assertHasNextEvent( + self.fcpClient.events.RequestRemoved, + consts.Message.ClientGet, + ('FcRequestStatus', consts.RequestStatus.Removed | + consts.RequestStatus.RemovedFromQueue + ), + ) - self.failUnless(newIdentifier in allRequests) - self.failIf(myIdentifier in allRequests) + self.failUnless(newIdentifier in requestsAll) + self.failIf(myIdentifier in requestsAll) - - - - #*********************************************************************************** # @@ -1072,7 +1079,7 @@ 'arbitryry.txt' ) myRequest = self.fcpClient.getRequest(myIdentifier) - allRequests = self.fcpClient.getRequests() + requestsAll = self.fcpClient.getRequests() self.fcpClient.removeRequest(myIdentifier) self.sendResponseMessage( @@ -1102,7 +1109,7 @@ ('FcRequestStatus', consts.RequestStatus.Restored), # no RequestStatus.Pending flag should be set here ) - self.failUnless(myIdentifier in allRequests) + self.failUnless(myIdentifier in requestsAll) self.assertHasNextEvent(None) #*********************************************************************************** @@ -1342,15 +1349,154 @@ #*********************************************************************************** # #*********************************************************************************** -#TODO: class TestPlugins(BaseTestConnectedClient): +class TestPlugins(BaseTestConnectedClient): + + + def testGetPluginInfo_Success(self): + + myIdentifier = self.fcpClient.getPluginInfo('hi there') + myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() + + self.failUnless(myIdentifier in requestsAll) + self.assertHasNextMessage( + consts.Message.GetPluginInfo, + ('Identifier', myIdentifier), + ('PluginName', 'hi there'), + ) + + self.sendResponseMessage( + consts.Message.PluginInfo, + PluginName='hi there', + Identifier=myIdentifier, + ) + + msg = self.assertHasNextEvent( + self.fcpClient.events.PluginInfo, + consts.Message.GetPluginInfo, + ('Identifier', myIdentifier), + ('PluginName', 'hi there'), + ('FcRequestStatus', consts.RequestStatus.Success | + consts.RequestStatus.RemovedFromQueue + ), + ) + + self.assertHasNextEvent(None) + self.failIf(myIdentifier in requestsAll) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + + def testGetPluginInfo_Failure(self): + myIdentifier = self.fcpClient.getPluginInfo('hi there') + myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() + + self.failUnless(myIdentifier in requestsAll) + self.assertHasNextMessage( + consts.Message.GetPluginInfo, + ('Identifier', myIdentifier), + ('PluginName', 'hi there'), + ) + + self.sendResponseMessage( + consts.Message.ProtocolError, + Code=32, # No such plugin + Identifier=myIdentifier, + ) + + msg = self.assertHasNextEvent( + self.fcpClient.events.PluginInfoFailed, + consts.Message.GetPluginInfo, + #('PluginName', 'hi there'), + ('Identifier', myIdentifier), + ('FcRequestStatus', consts.RequestStatus.Error | + consts.RequestStatus.RemovedFromQueue + ), + ) + + self.assertHasNextEvent(None) + self.failIf(myIdentifier in requestsAll) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + + + def testSendPluginMessage_Success(self): + + myIdentifier = self.fcpClient.sendPluginMessage('hi there', {'foo': "bar"}) + myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() + + self.failUnless(myIdentifier in requestsAll) + self.assertHasNextMessage( + consts.Message.FCPPluginMessage, + ('Identifier', myIdentifier), + ('PluginName', 'hi there'), + ('foo', 'bar'), + ) + + self.sendResponseMessage( + consts.Message.FCPPluginReply, + PluginName='hi there', + Identifier=myIdentifier, + baz='12345', + ) + + msg = self.assertHasNextEvent( + self.fcpClient.events.PluginMessage, + consts.Message.FCPPluginMessage, + ('PluginName', 'hi there'), + ('Identifier', myIdentifier), + ('FcRequestStatus', consts.RequestStatus.Success | + consts.RequestStatus.RemovedFromQueue + ), + ) + reply = msg['FcPluginReply'] + self.failUnless(reply.params.get('baz', None) == '12345') + + self.assertHasNextEvent(None) + self.failIf(myIdentifier in requestsAll) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + + + def testGetSendPluginMessage_Failure(self): + myIdentifier = self.fcpClient.sendPluginMessage('hi there', {'foo': "bar"}) + myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() + + self.failUnless(myIdentifier in requestsAll) + self.assertHasNextMessage( + consts.Message.FCPPluginMessage, + ('Identifier', myIdentifier), + ('PluginName', 'hi there'), + ('foo', 'bar'), + ) + + self.sendResponseMessage( + consts.Message.ProtocolError, + Code=32, # No such plugin + Identifier=myIdentifier, + ) + + msg = self.assertHasNextEvent( + self.fcpClient.events.PluginMessageFailed, + consts.Message.FCPPluginMessage, + #('PluginName', 'hi there'), + ('Identifier', myIdentifier), + ('FcRequestStatus', consts.RequestStatus.Error | + consts.RequestStatus.RemovedFromQueue + ), + ) + + self.assertHasNextEvent(None) + self.failIf(myIdentifier in requestsAll) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + + #*********************************************************************************** #TODO: class TestConfig(BaseTestConnectedClient): #*********************************************************************************** # #*********************************************************************************** -#TODO: class TestSSKKeypair(BaseTestConnectedClient): class TestGenerateKeypair(BaseTestConnectedClient): def testGeberateSSKKeypair(self): @@ -1454,6 +1600,7 @@ TestDDA, TestCollisions, + TestPlugins, TestGenerateKeypair, TestSubscribeUSK, ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-09 18:03:57
|
Revision: 199 http://fclient.svn.sourceforge.net/fclient/?rev=199&view=rev Author: jurner Date: 2008-02-09 10:03:51 -0800 (Sat, 09 Feb 2008) Log Message: ----------- fix: PriorityClass can not be changed for requests with Persistence=connection. This is not possible Fcp Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-09 18:03:38 UTC (rev 198) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-09 18:03:51 UTC (rev 199) @@ -842,8 +842,7 @@ #*********************************************************************************** class TestRequests(BaseTestConnectedClient): - - def testModifyRequest(self): + def testModifyRequest_Persistent(self): # request a arbitrary file myIdentifier = self.fcpClient.getFile( @@ -851,6 +850,7 @@ 'arbitryry.txt', persistentUserData='foo', priorityClass=consts.Priority.Medium, + persistence=consts.Persistence.Reboot, ) myRequest = self.fcpClient.getRequest(myIdentifier) self.assertHasNextMessage(consts.Message.ClientGet) @@ -881,6 +881,47 @@ self.assertHasNextEvent(None) + def testModifyRequest_NonPersistent(self): + + # request a arbitrary file + myIdentifier = self.fcpClient.getFile( + 'arbitrary-uri', + 'arbitryry.txt', + persistentUserData='foo', + priorityClass=consts.Priority.Medium, + ) + myRequest = self.fcpClient.getRequest(myIdentifier) + self.assertHasNextMessage(consts.Message.ClientGet) + + # respond to the file request + self.sendResponseMessage( + 'PersistentGet', + Started='false', + **myRequest.params + ) + + # test modify persistent user data + self.fcpClient.modifyRequest(myIdentifier, persistentUserData='bar', priorityClass=consts.Priority.High) + + # no way to modify priority in Fcp. The client ignores all attempts to do so currently + # no message is send,instead the event is triggered emidiately + + #msg = self.assertHasNextMessage(consts.Message.ModifyPersistentRequest) + # respond to the file request + #self.sendResponseMessage( + # 'PersistentRequestModified', + # **msg.params + # ) + self.assertHasNextEvent(self.fcpClient.events.RequestModified) + + self.failUnless(consts.RequestModified.PersistentUserData in myRequest['FcModified']) + #self.failUnless(consts.RequestModified.PriorityClass in myRequest['FcModified']) + self.assertEqual('bar', myRequest['FcPersistentUserData']) + #self.assertEqual(consts.Priority.High, myRequest['PriorityClass']) + + self.assertHasNextEvent(None) + + def testRemoveRequest_NonPersistent(self): # request a file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-11 10:55:22
|
Revision: 204 http://fclient.svn.sourceforge.net/fclient/?rev=204&view=rev Author: jurner Date: 2008-02-11 02:55:27 -0800 (Mon, 11 Feb 2008) Log Message: ----------- reworked tests. In theory it is now possible to test against the running node Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-11 10:54:36 UTC (rev 203) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-11 10:55:27 UTC (rev 204) @@ -26,40 +26,114 @@ del parentdir #<-- rel import hack - from dummy_socket import DummySocket +#*********************************************************************************** +# +#*********************************************************************************** +DIR = os.path.dirname(os.path.abspath(__file__)) +TestAgainstNode = 0 # don't know how to test against node. Do not touch this! +#*********************************************************************************** +# +#*********************************************************************************** +class MyFcpClient(FcpClient): + """Customized client recording all messages it sends + """ + def __init__(self, *args, **kwargs): + FcpClient.__init__(self, *args, **kwargs) + self.test_messagesSend = [] + + def sendMessageEx(self, msg): + FcpClient.sendMessageEx(self, msg) + # deepcopy here, we need exact state + msg = copy.deepcopy(msg) + self.test_messagesSend.append(msg) + +#*********************************************************************************** +# +#*********************************************************************************** +class DummySocketModule(object): + """Dummy socket module we inject into the client module for testing + + """ + AF_INET = socket.AF_INET + SOCK_STREAM = socket.SOCK_STREAM + error = socket.error + socket = DummySocket() + + def __init__(self): + self.lastSocket = None + + def __getattribute__(self, name): + obj = object.__getattribute__(self, name) + if name == 'socket': + self.lastSocket = obj + return obj + +#*********************************************************************************** +# +#*********************************************************************************** +class MySocketFactory(object): + """Real and alive socket. Can be used to test against the running node. Not used currently + + Usage: -DIR = os.path.dirname(os.path.abspath(__file__)) + DummySocketModule.socket = MySocketFactory() + + """ + def __init__(self, *args, **kwargs): + self.socket = None + self.closed = False + + def __call__(self, *args, **kwargs): + self.socket = socket.socket(*args, **kwargs) + return self + + def sendResponseMessage(self, *args, **kwargs): + pass + + def connect(self, *args, **kwargs): + return self.socket.connect(*args, **kwargs) + + def sendall(self, bytes): + return self.socket.sendall(bytes) + + def settimeout(self, n): + return self.socket.settimeout(n) + + def recv(self, n): + return self.socket.recv(n) + + def close(self): + self.closed = True + result = self.socket.close() + self.socket = None + return result + #*********************************************************************************** # #*********************************************************************************** class BaseTestClient(unittest.TestCase): - """Base class that does not connect to FcpClient prior to each test""" + """Base class for all tests""" + if TestAgainstNode: + DummySocketModule.socket = MySocketFactory() + fcpClient = MyFcpClient( + #debugVerbosity=FcpClient.consts.DebugVerbosity.Debug + ) + + # inject our customized socket module + socketModule = DummySocketModule() + fcp2_0_client.socket = socketModule + + def __init__(self, *args, **kwargs): unittest.TestCase.__init__(self, *args, **kwargs) - # replace socket module with our dummy socket module - self.oldSocketModule = None - self.socket = DummySocket() - class DummySocketModule(object): - AF_INET = socket.AF_INET - SOCK_STREAM = socket.SOCK_STREAM - error = socket.error - socket = self.socket - self.socketModule = DummySocketModule - - self.fcpClient = None # client to test self.events = [] # events received from the client - self.messages = [] # messages the client sent self.tmpfiles = [] # temp files used for testing (will be removed on tearDown) - def _captureMessagesFromClient(self, bytes): - s = DummySocket() - s.setResponse(bytes) - self.messages.append(self.fcpClient.Message.fromSocket(s)) - + def _captureEventsFromClient(self, event, msg): # have to copy message here, to get exact state msg = copy.deepcopy(msg) @@ -67,27 +141,34 @@ def connectClient(self): """Connects to the client""" - enum = self.fcpClient.iterConnect(duration=0.2, timeout=0.1) - msg = enum.next() - self.failIf(msg is not None) - #NOTE: have to send directly via socket here (our sendResponseMessage - # calls client.next() autkmatically) - self.socket.sendResponseMessage( - 'NodeHello', - FCPVersion='2.0', - Node='Fred', - Version=str(self.fcpClient.ExpectedFcpVersion), - Revision='999999999999', - Build='999999', - ExRevision='9999999999', - Testnet='false', - CompressionCodecs='1', - ConnectionIdentifier='any', - NodeLanguage='en', + for n, nodeHello in enumerate(self.fcpClient.iterConnect(duration=20, timeout=0.1)): + if n == 0: + self.assertHasNextMessage( + consts.Message.ClientHello + ) + self.sendResponseMessage( + 'NodeHello', + FCPVersion='2.0', + Node='Fred', + Version=str(self.fcpClient.ExpectedFcpVersion), + Revision='999999999999', + Build='9999999999', + ExRevision='9999999999', + Testnet='false', + CompressionCodecs='1', + ConnectionIdentifier='any', + NodeLanguage='en', + + callNext=False, + ) + + # check events the client triggered + self.assertHasNextEvent( + self.fcpClient.events.ClientConnected, + consts.Message.NodeHello, ) - msg = enum.next() - self.messages.pop(0) - self.events.pop(0) + + self.assertHasNextEvent(None) def assertHasNextEvent(self, expectedEvent=None, @@ -159,10 +240,10 @@ @return: message if a message was received or None """ if messageName is None: - self.failIf(self.messages) + self.failIf(self.fcpClient.test_messagesSend) else: - self.failUnless(self.messages) - msg = self.messages.pop(0) + self.failUnless(self.fcpClient.test_messagesSend) + msg = self.fcpClient.test_messagesSend.pop(0) self.assertEqual(msg.name, messageName) if param1 is not None: param1, value1 = param1 @@ -189,29 +270,20 @@ self.assertEqual(data, msg.data) return msg - def sendResponseMessage(self, messageName, data=None, **params): + def sendResponseMessage(self, messageName, data=None, callNext=True, **params): """Posts a message to the client""" - self.socket.sendResponseMessage(messageName, data=data, **params) - self.fcpClient.next() + self.socketModule.lastSocket.sendResponseMessage(messageName, data=data, **params) + if not TestAgainstNode: + if callNext: + self.fcpClient.next() def setUp(self): - self.oldSocketModule = fcp2_0_client.socket - fcp2_0_client.socket = self.socketModule - - self.fcpClient = FcpClient() - # conect all events self.events = [] # events received from the client for event in self.fcpClient.events: event += self._captureEventsFromClient - - # capture all messages the client sent - self.messages = [] # messages the client send - self.socket.setBytesReceiver(self._captureMessagesFromClient) def tearDown(self): - fcp2_0_client.socket = self.oldSocketModule - # disconnect all events for event in self.fcpClient.events: event -= self._captureEventsFromClient @@ -221,17 +293,6 @@ #*********************************************************************************** # #*********************************************************************************** -class BaseTestConnectedClient(BaseTestClient): - """Base class that automatically connects to FcpClient prior to each test""" - - def setUp(self): - BaseTestClient.setUp(self) - self.connectClient() - - -#*********************************************************************************** -# -#*********************************************************************************** #TODO: class Test.... set/getDebugVerbosity / connectionName and friends... (BaseTestConnectedClient): #*********************************************************************************** @@ -240,7 +301,7 @@ class TestConnect(BaseTestClient): - def testClose(self): + def XXXtestClose(self): self.failIf(self.socket.closed) self.connectClient() self.fcpClient.close() @@ -248,11 +309,16 @@ - def testConnect(self): - nodeHello = self.fcpClient.connect(duration=0.2, timeout=0.1) + def XXXtestConnect(self): + nodeHello = self.fcpClient.connect(duration=10, timeout=0.1) + self.failIf(nodeHello is None) + return + + + nodeHello = self.fcpClient.connect(duration=0, timeout=0) self.failIf(nodeHello is not None) - self.socket.sendResponseMessage( + self.socketModule.lastSocket.sendResponseMessage( 'NodeHello', FCPVersion='2.0', Node='Fred', @@ -265,68 +331,57 @@ ConnectionIdentifier='any', NodeLanguage='en', ) - nodeHello = self.fcpClient.connect(duration=0.2, timeout=0.1) + nodeHello = self.fcpClient.connect(duration=10, timeout=0.1) self.failIf(nodeHello is None) - def testIterConnect_Failure(self): + def test_0_IterIterConnect_RFailure(self): - # simulate a failed connection attempt - enum = self.fcpClient.connect(duration=0.2, timeout=0.1) - t0 = time.time() - while time.time() - t0 < 1: - try: - nodeHello = enum.next() - except: break - else: - raise RuntimeError('Fell trough') + # we cannot test against node here + if not TestAgainstNode: - - # check messages the client send - self.assertHasNextMessage(consts.Message.ClientHello) - - # check events the client triggered - self.assertHasNextEvent( - self.fcpClient.events.ClientDisconnected, - consts.Message.ClientDisconnected, - ('DisconnectReason', consts.DisconnectReason.ConnectingFailed), - ) - - self.assertHasNextEvent(None) - - # did the client clean up our socket? - self.failUnless(self.socket.closed) + for n, nodeHello in enumerate(self.fcpClient.iterConnect(duration=1, timeout=0.1)): + if n == 0: + self.assertHasNextMessage( + consts.Message.ClientHello + ) - - def testIterConnect_Success(self): + # check events the client triggered + self.assertHasNextEvent( + self.fcpClient.events.ClientDisconnected, + consts.Message.ClientDisconnected, + ('DisconnectReason', consts.DisconnectReason.ConnectingFailed), + ) + + self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + self.failUnless(self.socketModule.lastSocket.closed) + + #self.fcpClient.connect(duration=20, timeout=0.1) + - # simulate a successful connection attempt - enum = self.fcpClient.iterConnect(duration=0.2, timeout=0.1) - msg = enum.next() - self.failIf(msg is not None) - - # check messages the client send message - self.assertHasNextMessage( - consts.Message.ClientHello - ) - - #NOTE: have to send directly via socket here (our sendResponseMessage - # calls client.next() autkmatically) - self.socket.sendResponseMessage( - 'NodeHello', - FCPVersion='2.0', - Node='Fred', - Version=str(self.fcpClient.ExpectedFcpVersion), - Revision='999999999999', - Build='9999999999', - ExRevision='9999999999', - Testnet='false', - CompressionCodecs='1', - ConnectionIdentifier='any', - NodeLanguage='en', - ) - msg = enum.next() + def test_1_IterConnect_Success(self): + for n, nodeHello in enumerate(self.fcpClient.iterConnect(duration=20, timeout=0.1)): + if n == 0: + self.assertHasNextMessage( + consts.Message.ClientHello + ) + self.sendResponseMessage( + 'NodeHello', + FCPVersion='2.0', + Node='Fred', + Version=str(self.fcpClient.ExpectedFcpVersion), + Revision='999999999999', + Build='9999999999', + ExRevision='9999999999', + Testnet='false', + CompressionCodecs='1', + ConnectionIdentifier='any', + NodeLanguage='en', + callNext=False, + ) + # check events the client triggered self.assertHasNextEvent( self.fcpClient.events.ClientConnected, @@ -334,13 +389,14 @@ ) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) #*********************************************************************************** # #*********************************************************************************** -class TestDisconnectReason(BaseTestConnectedClient): +class TestDisconnectReason(BaseTestClient): - def testDuplicateClientName(self): + def test_1000_DuplicateClientName(self): self.sendResponseMessage('CloseConnectionDuplicateClientName') msg = self.assertHasNextEvent( @@ -351,12 +407,16 @@ self.failUnless('Param' in msg.params) self.assertEqual(msg['Param'], None) + self.failUnless(self.socketModule.lastSocket.closed) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + + self.connectClient() - def testSocketDied_Receive(self): + def test_1001_SocketDied_Receive(self): - self.socket.close() + self.socketModule.lastSocket.close() self.fcpClient.next() # check if ClientDisconnected events has been triggered @@ -369,12 +429,16 @@ self.failUnless('Param' in msg.params) self.assertEqual(msg['Param'].name, consts.Message.ClientSocketDied) + self.failUnless(self.socketModule.lastSocket.closed) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + + self.connectClient() - def testSocketDied_Send(self): + def test_1002_SocketDied_Send(self): - self.socket.close() + self.socketModule.lastSocket.close() # send a test message self.assertRaises(socket.error, self.fcpClient.sendMessage, 'test' ) @@ -389,10 +453,13 @@ self.failUnless('Param' in msg.params) self.assertEqual(msg['Param'].name, consts.Message.ClientSocketDied) + self.failUnless(self.socketModule.lastSocket.closed) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + self.connectClient() - def testShutdown(self): + def test_1003_Shutdown(self): self.fcpClient.closeFreenet() @@ -412,10 +479,14 @@ self.failUnless('Param' in msg.params) self.assertEqual(msg['Param'], None) + self.failUnless(self.socketModule.lastSocket.closed) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + self.connectClient() + - def testVersionMismatch(self): + def test_1004_VersionMismatch(self): # cheat a bit and reconnect client enum = self.fcpClient.iterConnect(duration=0.2, timeout=0.1) @@ -427,7 +498,7 @@ #NOTE: have to send directly via socket here (our sendResponseMessage # calls client.next() autkmatically) - self.socket.sendResponseMessage( + self.socketModule.lastSocket.sendResponseMessage( 'NodeHello', FCPVersion='0.0', Node='Fred', @@ -439,6 +510,8 @@ CompressionCodecs='1', ConnectionIdentifier='any', NodeLanguage='en', + + callNext=False ) msg = enum.next() @@ -452,31 +525,42 @@ self.failUnless('Param' in msg.params) self.assertEqual(msg['Param'].name, consts.Message.NodeHello) + self.failUnless(self.socketModule.lastSocket.closed) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + self.connectClient() #*********************************************************************************** # #*********************************************************************************** -class TestClientGet(BaseTestConnectedClient): +class TestClientGet(BaseTestClient): - def testClientGetRegistered(self): + def test_2000_ClientGetRegistered(self): # request a arbitrary file myIdentifier = self.fcpClient.getData( 'arbitrary-uri', ) - self.assertHasNextMessage( - consts.Message.ClientGet, - ) + myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() + + self.assertHasNextMessage(consts.Message.ClientGet) self.assertHasNextEvent(None) - self.failUnless(self.fcpClient.getRequests() ) + self.failUnless(myIdentifier in requestsAll) myRequest = self.fcpClient.getRequest(myIdentifier) self.assertEqual(myIdentifier, myRequest['Identifier']) self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Null) + self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + + del requestsAll[myIdentifier] + self.failIf(requestsAll) + + - def testGetData_Success(self): + def test_2001_GetData_Success(self): # request a arbitrary file myIdentifier = self.fcpClient.getData( @@ -485,6 +569,8 @@ myRequest = self.fcpClient.getRequest(myIdentifier) requestsAll = self.fcpClient.getRequests() + self.assertHasNextMessage(consts.Message.ClientGet) + # respond to the file request self.sendResponseMessage( 'PersistentGet', @@ -567,18 +653,25 @@ ) self.failUnless(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + del requestsAll[myIdentifier] + self.failIf(requestsAll) - def testGetData_Failure(self): + + def test_2002_GetData_Failure(self): # request a arbitrary file myIdentifier = self.fcpClient.getData( 'arbitrary-uri', ) myRequest = self.fcpClient.getRequest(myIdentifier) - requestsAll = self.fcpClient.getRequests() + requestsAll = self.fcpClient.getRequests() + self.assertHasNextMessage(consts.Message.ClientGet) + # respond to the file request self.sendResponseMessage( 'PersistentGet', @@ -605,6 +698,7 @@ ) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) #return @@ -633,9 +727,13 @@ self.failUnless(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + + del requestsAll[myIdentifier] + self.failIf(requestsAll) - def testGetFile_Success(self): + def test_2003_GetFile_Success(self): # request a arbitrary file myIdentifier = self.fcpClient.getFile( @@ -676,9 +774,12 @@ self.failIf(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + + self.failIf(requestsAll) - def testGetFile_Failure(self): + def test_2004_GetFile_Failure(self): # request a arbitrary file myIdentifier = self.fcpClient.getFile( @@ -715,9 +816,12 @@ self.failIf(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + self.failIf(requestsAll) + - def testGetKeyInfo_Success(self): + def test_2005_GetKeyInfo_Success(self): # request a arbitrary uri myIdentifier = self.fcpClient.getKeyInfo( @@ -757,9 +861,12 @@ self.failIf(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + self.failIf(requestsAll) - def testGetKeyInfo_TooBig(self): + + def test_2006_GetKeyInfo_TooBig(self): # test specdial case where ProtocolError.TooBig is handled as success # request a arbitrary uri @@ -795,16 +902,21 @@ ) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + self.failIf(requestsAll) + - def testGetKeyInfo_Failure(self): + def test_2007_GetKeyInfo_Failure(self): # request a arbitrary file myIdentifier = self.fcpClient.getKeyInfo( 'arbitrary-uri', ) myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() + self.assertHasNextMessage(consts.Message.ClientGet) # respond to the file request @@ -831,6 +943,9 @@ ) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + + self.failIf(requestsAll) #*********************************************************************************** # @@ -840,9 +955,9 @@ #*********************************************************************************** # #*********************************************************************************** -class TestRequests(BaseTestConnectedClient): +class TestRequests(BaseTestClient): - def testModifyRequest_Persistent(self): + def test_3000_ModifyRequest_Persistent(self): # request a arbitrary file myIdentifier = self.fcpClient.getFile( @@ -853,6 +968,8 @@ persistence=consts.Persistence.Reboot, ) myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() + self.assertHasNextMessage(consts.Message.ClientGet) # respond to the file request @@ -861,7 +978,9 @@ Started='false', **myRequest.params ) - + #self.assertNextMessage(consts.Message.ClientGet) + + # test modify persistent user data self.fcpClient.modifyRequest(myIdentifier, persistentUserData='bar', priorityClass=consts.Priority.High) msg = self.assertHasNextMessage(consts.Message.ModifyPersistentRequest) @@ -879,9 +998,13 @@ self.assertEqual(consts.Priority.High, myRequest['PriorityClass']) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + + del requestsAll[myIdentifier] + self.failIf(requestsAll) - def testModifyRequest_NonPersistent(self): + def test_3001_ModifyRequest_NonPersistent(self): # request a arbitrary file myIdentifier = self.fcpClient.getFile( @@ -891,6 +1014,8 @@ priorityClass=consts.Priority.Medium, ) myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() + self.assertHasNextMessage(consts.Message.ClientGet) # respond to the file request @@ -912,6 +1037,7 @@ # 'PersistentRequestModified', # **msg.params # ) + self.assertHasNextEvent(self.fcpClient.events.RequestModified) self.failUnless(consts.RequestModified.PersistentUserData in myRequest['FcModified']) @@ -920,9 +1046,13 @@ #self.assertEqual(consts.Priority.High, myRequest['PriorityClass']) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + + del requestsAll[myIdentifier] + self.failIf(requestsAll) - def testRemoveRequest_NonPersistent(self): + def test_3002_RemoveRequest_NonPersistent(self): # request a file myIdentifier = self.fcpClient.getFile( @@ -930,7 +1060,9 @@ 'arbitrary.txt' ) myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() + self.assertHasNextMessage(consts.Message.ClientGet) # respond to the file request self.sendResponseMessage( 'PersistentGet', @@ -962,9 +1094,12 @@ ) self.failIf(self.fcpClient.getRequests()) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + + self.failIf(requestsAll) - def testRemoveRequest_persistent(self): + def test_3003_RemoveRequest_persistent(self): # request a file myIdentifier = self.fcpClient.getFile( @@ -973,7 +1108,10 @@ persistence=consts.Persistence.Reboot, ) myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() + self.assertHasNextMessage(consts.Message.ClientGet) + # respond to the file request self.sendResponseMessage( 'PersistentGet', @@ -1015,10 +1153,13 @@ self.failIf(self.fcpClient.getRequests()) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + + self.failIf(requestsAll) - def testResendRequest_NonPersistent(self): + def test_3004_ResendRequest_NonPersistent(self): myIdentifier = self.fcpClient.getData('any-key') myRequest = self.fcpClient.getRequest(myIdentifier) @@ -1041,8 +1182,14 @@ self.assertHasNextMessage(consts.Message.ClientGet) + self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + + del requestsAll[newIdentifier] + self.failIf(requestsAll) + - def testResendRequest_Persistent(self): + def test_3005_ResendRequest_Persistent(self): myIdentifier = self.fcpClient.getData('any-key', persistence=consts.Persistence.Reboot) myRequest = self.fcpClient.getRequest(myIdentifier) @@ -1077,14 +1224,17 @@ self.failUnless(newIdentifier in requestsAll) self.failIf(myIdentifier in requestsAll) + del requestsAll[newIdentifier] + self.failIf(requestsAll) + #*********************************************************************************** # #*********************************************************************************** #TODO: testRestoreClientPut and friends -class TestRestoreRequests(BaseTestConnectedClient): +class TestRestoreRequests(BaseTestClient): - def testRestorePersistentGet_InvalidIdentifier(self): + def test_4000_RestorePersistentGet_InvalidIdentifier(self): # throw an invalid PersistentRequest at the client myIdentifier = 'true-invalid-request-identifier' @@ -1110,9 +1260,10 @@ # the client should not trigger any events self.assertHasNextEvent(None) + self.assertHasNextMessage(None) - def testRestorePersistentGet_ValidIdentifier(self): + def test_4001_RestorePersistentGet_ValidIdentifier(self): # we need a valid identifier to restore a request, so hack a bit myIdentifier = self.fcpClient.getFile( @@ -1122,6 +1273,8 @@ myRequest = self.fcpClient.getRequest(myIdentifier) requestsAll = self.fcpClient.getRequests() + self.assertHasNextMessage(consts.Message.ClientGet) + self.fcpClient.removeRequest(myIdentifier) self.sendResponseMessage( 'PersistentRequestRemoved', @@ -1152,6 +1305,10 @@ self.failUnless(myIdentifier in requestsAll) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + + del requestsAll[myIdentifier] + self.failIf(requestsAll) #*********************************************************************************** # @@ -1160,15 +1317,17 @@ #TODO: testDDAWriteDenied #TODO: testDDAWriteDenied_WriteDisallowed -class TestDDA(BaseTestConnectedClient): +class TestDDA(BaseTestClient): - def testDDAWriteDenied(self): + def test_5000_DDAWriteDenied(self): # request a file myIdentifier = self.fcpClient.getFile( 'arbitrary-uri', os.path.join(DIR, 'DDATest.txt') ) + myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() # client schould send a ClientGet self.assertHasNextMessage(consts.Message.ClientGet) @@ -1243,6 +1402,12 @@ requests = self.fcpClient.getRequests() self.assertEqual(len(requests), 1) + + self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + + del requestsAll[myIdentifier] + self.failIf(requestsAll) #def testDDAReadDenied(self): @@ -1252,15 +1417,17 @@ #*********************************************************************************** # #*********************************************************************************** -class TestCollisions(BaseTestConnectedClient): +class TestCollisions(BaseTestClient): - def testIdentifierCollision(self): + def test_6000_IdentifierCollision(self): # request a file myIdentifier = self.fcpClient.getFile( 'arbitrary-uri', os.path.join(DIR, 'test.txt') ) + myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() # client schould send a ClientGet self.assertHasNextMessage(consts.Message.ClientGet) @@ -1275,10 +1442,6 @@ # client schould send a new ClientGet self.assertHasNextMessage(consts.Message.ClientGet) - # check client state - requests = self.fcpClient.getRequests() - self.assertEqual(len(requests), 1) - # check if RequestModified event has been triggered msg = self.assertHasNextEvent( self.fcpClient.events.RequestModified, @@ -1286,13 +1449,19 @@ ) self.failUnless(consts.RequestModified.Identifier in msg['FcModified']) - self.assertEqual(msg['FcModified'][consts.RequestModified.Identifier], myIdentifier) - self.assertNotEqual(msg['Identifier'], myIdentifier) + oldIdentifier = msg['FcModified'][consts.RequestModified.Identifier] + newIdentifier = msg['Identifier'] + self.assertEqual(oldIdentifier, myIdentifier) + self.assertNotEqual(newIdentifier, myIdentifier) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + + del requestsAll[newIdentifier] + self.failIf(requestsAll) - def testFilenameCollision_HandleRename(self): + def test_6001_FilenameCollision_HandleRename(self): # request a file fpath = os.path.join(DIR, 'test.txt') @@ -1304,14 +1473,12 @@ fpath, filenameCollision=consts.FilenameCollision.HandleRename, ) + myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() # client schould send a ClientGet self.assertHasNextMessage(consts.Message.ClientGet) - # check if our request was registered - requests = self.fcpClient.getRequests() - self.failUnless(len(requests) == 1) - # now respond with a ProtocolError self.sendResponseMessage( 'ProtocolError', @@ -1322,7 +1489,8 @@ Global='false', ) - # client schould send a new ClientGet with a differing filename + # client schould send a new ClientGet with a different filename + self.assertHasNextMessage(consts.Message.ClientGet) msg = self.assertHasNextEvent( self.fcpClient.events.RequestModified, consts.Message.ClientGet @@ -1341,9 +1509,13 @@ self.failUnless(filenameCollision & consts.FilenameCollision.CollisionHandled) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + del requestsAll[myIdentifier] + self.failIf(requestsAll) + - def testFilenameCollision_HandleNever(self): + def test_6002_FilenameCollision_HandleNever(self): # request a file fpath = os.path.join(DIR, 'test.txt') @@ -1356,6 +1528,7 @@ filenameCollision=consts.FilenameCollision.HandleNever, ) myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() # client schould send a ClientGet self.assertHasNextMessage(consts.Message.ClientGet) @@ -1381,7 +1554,10 @@ self.failIf(self.fcpClient.getRequests()) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + self.failIf(requestsAll) + #*********************************************************************************** # #*********************************************************************************** @@ -1390,10 +1566,10 @@ #*********************************************************************************** # #*********************************************************************************** -class TestPlugins(BaseTestConnectedClient): +class TestPlugins(BaseTestClient): - def testGetPluginInfo_Success(self): + def testGet_8000_PluginInfo_Success(self): myIdentifier = self.fcpClient.getPluginInfo('hi there') myRequest = self.fcpClient.getRequest(myIdentifier) @@ -1422,12 +1598,17 @@ ), ) + self.failIf(myIdentifier in requestsAll) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + self.assertHasNextEvent(None) - self.failIf(myIdentifier in requestsAll) - self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + self.assertHasNextMessage(None) + + self.failIf(requestsAll) + - def testGetPluginInfo_Failure(self): + def test_8001_GetPluginInfo_Failure(self): myIdentifier = self.fcpClient.getPluginInfo('hi there') myRequest = self.fcpClient.getRequest(myIdentifier) requestsAll = self.fcpClient.getRequests() @@ -1455,12 +1636,16 @@ ), ) + self.failIf(myIdentifier in requestsAll) + self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + self.assertHasNextEvent(None) - self.failIf(myIdentifier in requestsAll) - self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + self.assertHasNextMessage(None) + + self.failIf(requestsAll) - def testSendPluginMessage_Success(self): + def test_8002_SendPluginMessage_Success(self): myIdentifier = self.fcpClient.sendPluginMessage('hi there', {'foo': "bar"}) myRequest = self.fcpClient.getRequest(myIdentifier) @@ -1493,12 +1678,16 @@ reply = msg['FcPluginReply'] self.failUnless(reply.params.get('baz', None) == '12345') - self.assertHasNextEvent(None) self.failIf(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + + self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + + self.failIf(requestsAll) - def testGetSendPluginMessage_Failure(self): + def test_8003_GetSendPluginMessage_Failure(self): myIdentifier = self.fcpClient.sendPluginMessage('hi there', {'foo': "bar"}) myRequest = self.fcpClient.getRequest(myIdentifier) requestsAll = self.fcpClient.getRequests() @@ -1527,9 +1716,12 @@ ), ) - self.assertHasNextEvent(None) self.failIf(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + + self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + self.failIf(requestsAll) #*********************************************************************************** @@ -1538,13 +1730,14 @@ #*********************************************************************************** # #*********************************************************************************** -class TestGenerateKeypair(BaseTestConnectedClient): +class TestGenerateKeypair(BaseTestClient): - def testGeberateSSKKeypair(self): + def test_10000_GeberateSSKKeypair(self): myIdentifier = self.fcpClient.generateKeypair(consts.KeyType.SSK) myRequest = self.fcpClient.getRequest(myIdentifier) requestsAll = self.fcpClient.getRequests() + self.assertHasNextMessage(consts.Message.GenerateSSK) self.sendResponseMessage( 'SSKKeypair', Identifier=myIdentifier, @@ -1562,16 +1755,20 @@ consts.RequestStatus.RemovedFromQueue ), ) - self.assertHasNextEvent(None) self.failIf(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + self.failIf(requestsAll) - def testGeberateUSKKeypair(self): + + def test_10001_GeberateUSKKeypair(self): myIdentifier = self.fcpClient.generateKeypair(consts.KeyType.USK) myRequest = self.fcpClient.getRequest(myIdentifier) requestsAll = self.fcpClient.getRequests() + self.assertHasNextMessage(consts.Message.GenerateSSK) self.sendResponseMessage( 'SSKKeypair', Identifier=myIdentifier, @@ -1589,18 +1786,21 @@ consts.RequestStatus.RemovedFromQueue ), ) - self.assertHasNextEvent(None) self.failIf(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + + self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + self.failIf(requestsAll) #*********************************************************************************** # #*********************************************************************************** -class TestSubscribeUSK(BaseTestConnectedClient): +class TestSubscribeUSK(BaseTestClient): - def testSubscribe(self): + def test_11000_Subscribe(self): myIdentifier = self.fcpClient.subscribeUSK('arbitrary') myRequest = self.fcpClient.getRequest(myIdentifier) @@ -1609,6 +1809,7 @@ self.failUnless(myIdentifier in requestsAll) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) + self.assertHasNextMessage(consts.Message.SubscribeUSK) self.sendResponseMessage( 'SubscribedUSKUpdate', Identifier=myIdentifier, @@ -1624,15 +1825,19 @@ ('URI', 'arbitryry/99/'), ) self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + del requestsAll[myIdentifier] + self.failIf(requestsAll) + #********************************************************************************* # #********************************************************************************* def suite(): - - tests = ( + + testCases = ( TestConnect, TestDisconnectReason, TestClientGet, @@ -1647,8 +1852,8 @@ ) suite = unittest.TestSuite() - for test in tests: - suite.addTest(unittest.makeSuite(test)) + for testCase in testCases: + suite.addTest(unittest.makeSuite(testCase)) return suite def test(): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-17 09:21:22
|
Revision: 223 http://fclient.svn.sourceforge.net/fclient/?rev=223&view=rev Author: jurner Date: 2008-02-17 01:21:27 -0800 (Sun, 17 Feb 2008) Log Message: ----------- new sys path hack Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-17 09:20:13 UTC (rev 222) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-17 09:21:27 UTC (rev 223) @@ -9,12 +9,13 @@ import unittest #--> rel import hack -def parentdir(n, fpath): - fpath = os.path.abspath(fpath) - for i in xrange(n): - fpath = os.path.dirname(fpath) - return fpath -sys.path.insert(0, parentdir(2, __file__)) +class SysPathHack(object): + def __init__(self, n): + fpath = os.path.abspath(__file__) + for i in xrange(n): fpath = os.path.dirname(fpath) + sys.path.insert(0, fpath) + def __del__(self): sys.path.pop(0) +hack = SysPathHack(2) import fcp2_0_client @@ -22,8 +23,7 @@ import fcp2_0_consts as consts -sys.path.pop(0) -del parentdir +del hack #<-- rel import hack from dummy_socket import DummySocket This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-21 13:11:20
|
Revision: 238 http://fclient.svn.sourceforge.net/fclient/?rev=238&view=rev Author: jurner Date: 2008-02-21 05:11:07 -0800 (Thu, 21 Feb 2008) Log Message: ----------- RequestStatus.Completed flag is now set before listeners are informed Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-21 13:10:08 UTC (rev 237) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-21 13:11:07 UTC (rev 238) @@ -621,7 +621,8 @@ self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, ('FcRequestStatus', consts.RequestStatus.Success | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), data=data ) @@ -648,7 +649,7 @@ self.assertHasNextEvent( self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Success), + ('FcRequestStatus', consts.RequestStatus.Success | consts.RequestStatus.Completed), data=data ) self.failUnless(myIdentifier in requestsAll) @@ -693,10 +694,10 @@ self.fcpClient.events.RequestFailed, consts.Message.ClientGet, ('FcRequestStatus', consts.RequestStatus.Error | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) - self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) self.assertHasNextMessage(None) @@ -722,10 +723,9 @@ self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, - ('FcRequestStatus', consts.RequestStatus.Error), + ('FcRequestStatus', consts.RequestStatus.Error | consts.RequestStatus.Completed), ) self.failUnless(myIdentifier in requestsAll) - self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) self.assertHasNextMessage(None) @@ -768,7 +768,8 @@ self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, ('FcRequestStatus', consts.RequestStatus.Success | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) self.failIf(myIdentifier in requestsAll) @@ -806,15 +807,17 @@ Global='false', # blah.. more here ) + + print consts.RequestStatus.humanReadable(myRequest['FcRequestStatus']) self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, ('FcRequestStatus', consts.RequestStatus.Error | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) self.failIf(myIdentifier in requestsAll) - self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) self.assertHasNextEvent(None) self.assertHasNextMessage(None) @@ -855,7 +858,8 @@ self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, ('FcRequestStatus', consts.RequestStatus.Success | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) self.failIf(myIdentifier in requestsAll) @@ -897,7 +901,8 @@ self.fcpClient.events.RequestCompleted, consts.Message.ClientGet, ('FcRequestStatus', consts.RequestStatus.Success | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) @@ -938,7 +943,8 @@ self.fcpClient.events.RequestFailed, consts.Message.ClientGet, ('FcRequestStatus', consts.RequestStatus.Error | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) self.failUnless(myRequest['FcRequestStatus'] & consts.RequestStatus.Completed) @@ -1079,8 +1085,8 @@ # of our request should be removed emidiately, self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Removed | - consts.RequestStatus.Completed | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ) self.failIf(myIdentifier in self.fcpClient.getRequests()) @@ -1089,7 +1095,8 @@ self.fcpClient.events.RequestRemoved, consts.Message.ClientGet, ('FcRequestStatus', consts.RequestStatus.Removed | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) self.failIf(self.fcpClient.getRequests()) @@ -1147,7 +1154,8 @@ self.fcpClient.events.RequestRemoved, consts.Message.ClientGet, ('FcRequestStatus', consts.RequestStatus.Removed | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) @@ -1176,7 +1184,8 @@ self.fcpClient.events.RequestRemoved, consts.Message.ClientGet, ('FcRequestStatus', consts.RequestStatus.Removed | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) @@ -1217,7 +1226,8 @@ self.fcpClient.events.RequestRemoved, consts.Message.ClientGet, ('FcRequestStatus', consts.RequestStatus.Removed | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) @@ -1594,7 +1604,8 @@ ('Identifier', myIdentifier), ('PluginName', 'hi there'), ('FcRequestStatus', consts.RequestStatus.Success | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) @@ -1632,7 +1643,8 @@ #('PluginName', 'hi there'), ('Identifier', myIdentifier), ('FcRequestStatus', consts.RequestStatus.Error | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) @@ -1672,7 +1684,8 @@ ('PluginName', 'hi there'), ('Identifier', myIdentifier), ('FcRequestStatus', consts.RequestStatus.Success | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) reply = msg['FcPluginReply'] @@ -1712,7 +1725,8 @@ #('PluginName', 'hi there'), ('Identifier', myIdentifier), ('FcRequestStatus', consts.RequestStatus.Error | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) @@ -1752,7 +1766,8 @@ ('FcPublicKey','SSK@public'), ('FcPrivateKey','SSK@private'), ('FcRequestStatus', consts.RequestStatus.Success | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) self.failIf(myIdentifier in requestsAll) @@ -1783,7 +1798,8 @@ ('FcPublicKey','USK@public'), ('FcPrivateKey','USK@private'), ('FcRequestStatus', consts.RequestStatus.Success | - consts.RequestStatus.RemovedFromQueue + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed ), ) self.failIf(myIdentifier in requestsAll) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-23 08:18:14
|
Revision: 243 http://fclient.svn.sourceforge.net/fclient/?rev=243&view=rev Author: jurner Date: 2008-02-23 00:18:18 -0800 (Sat, 23 Feb 2008) Log Message: ----------- adapt to removed Fcp bugfix Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-23 08:17:33 UTC (rev 242) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-23 08:18:18 UTC (rev 243) @@ -808,7 +808,6 @@ # blah.. more here ) - print consts.RequestStatus.humanReadable(myRequest['FcRequestStatus']) self.assertHasNextEvent( self.fcpClient.events.RequestFailed, consts.Message.ClientGet, @@ -1135,7 +1134,7 @@ # status of our request should be set to removed emidiately, but it should # not be removed from the client - self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Removed) + self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Removed | consts.RequestStatus.Completed) self.failUnless(myIdentifier in self.fcpClient.getRequests()) # client schould send a RemovePersistentRequest This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-24 11:50:22
|
Revision: 245 http://fclient.svn.sourceforge.net/fclient/?rev=245&view=rev Author: jurner Date: 2008-02-24 03:50:25 -0800 (Sun, 24 Feb 2008) Log Message: ----------- added tests for putRedirect() Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-24 11:48:04 UTC (rev 244) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-24 11:50:25 UTC (rev 245) @@ -548,7 +548,6 @@ self.assertHasNextEvent(None) self.failUnless(myIdentifier in requestsAll) - myRequest = self.fcpClient.getRequest(myIdentifier) self.assertEqual(myIdentifier, myRequest['Identifier']) self.assertEqual(myRequest['FcRequestStatus'], consts.RequestStatus.Null) @@ -955,7 +954,79 @@ #*********************************************************************************** # #*********************************************************************************** -#TODO: class TestClientPut(BaseTestConnectedClient): +#TODO: +# +# +# +class TestClientPut(BaseTestClient): + + + def testPutRedirect_Success(self): + # request a arbitrary file + myIdentifier = self.fcpClient.putRedirect( + 'my-redirect-name', + 'SSK@arbitrary-uri', + ) + myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() + + self.assertHasNextMessage(consts.Message.ClientPut) + self.failUnless(myIdentifier in requestsAll) + + self.sendResponseMessage( + 'PutSuccessful', + Identifier=myIdentifier, + URI='KSK@my-redirect-name' + ) + + self.assertHasNextEvent( + self.fcpClient.events.RequestCompleted, + consts.Message.ClientPut, + ('FcRequestStatus', consts.RequestStatus.Success | + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed + ), + ) + + self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + self.failIf(requestsAll) + + + def testPutRedirect_Failure(self): + # request a arbitrary file + myIdentifier = self.fcpClient.putRedirect( + 'my-redirect-name', + 'SSK@arbitrary-uri', + ) + myRequest = self.fcpClient.getRequest(myIdentifier) + requestsAll = self.fcpClient.getRequests() + + self.assertHasNextMessage(consts.Message.ClientPut) + self.failUnless(myIdentifier in requestsAll) + + self.sendResponseMessage( + 'PutFailed', + Identifier=myIdentifier, + Code='5', # rout not found + ) + + self.assertHasNextEvent( + self.fcpClient.events.RequestFailed, + consts.Message.ClientPut, + ('FcRequestStatus', consts.RequestStatus.Error | + consts.RequestStatus.RemovedFromQueue | + consts.RequestStatus.Completed + ), + ) + + self.assertHasNextEvent(None) + self.assertHasNextMessage(None) + self.failIf(requestsAll) + + + + #*********************************************************************************** # @@ -1856,6 +1927,7 @@ TestConnect, TestDisconnectReason, TestClientGet, + TestClientPut, TestRequests, TestRestoreRequests, TestDDA, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ju...@us...> - 2008-02-26 09:09:38
|
Revision: 252 http://fclient.svn.sourceforge.net/fclient/?rev=252&view=rev Author: jurner Date: 2008-02-26 01:09:30 -0800 (Tue, 26 Feb 2008) Log Message: ----------- documentation fix Modified Paths: -------------- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py Modified: trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py =================================================================== --- trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-26 09:08:58 UTC (rev 251) +++ trunk/sandbox/fcp/test_fcp/test_fcp2_0_client.py 2008-02-26 09:09:30 UTC (rev 252) @@ -76,7 +76,7 @@ class MySocketFactory(object): """Real and alive socket. Can be used to test against the running node. Not used currently - Usage: + Usage:: DummySocketModule.socket = MySocketFactory() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |