SF.net SVN: fclient: [423] trunk/sandbox/fcp2/test_fcp/test_client.py
Status: Pre-Alpha
Brought to you by:
jurner
|
From: <jU...@us...> - 2008-06-29 12:39:07
|
Revision: 423
http://fclient.svn.sourceforge.net/fclient/?rev=423&view=rev
Author: jUrner
Date: 2008-06-29 05:39:15 -0700 (Sun, 29 Jun 2008)
Log Message:
-----------
got most of the tests to work again
Modified Paths:
--------------
trunk/sandbox/fcp2/test_fcp/test_client.py
Modified: trunk/sandbox/fcp2/test_fcp/test_client.py
===================================================================
--- trunk/sandbox/fcp2/test_fcp/test_client.py 2008-06-29 12:38:23 UTC (rev 422)
+++ trunk/sandbox/fcp2/test_fcp/test_client.py 2008-06-29 12:39:15 UTC (rev 423)
@@ -360,8 +360,7 @@
#***********************************************************************************
class Test_connect(BaseTestClient):
pass
-
-
+
#***********************************************************************************
#
#***********************************************************************************
@@ -1346,104 +1345,38 @@
self.assertHasNextEvent(None)
self.assertHasNextMessage(None)
self.failUnless(self.ioOpen())
-
-
-#***********************************************************************************
-#
-#***********************************************************************************
-class Test_subscribeUSK(BaseTestClient):
- def test_100_subscribeUSK_accepts_key_object(self):
- self.connectClient()
- key = self.client.key.USK(client.key.DummyKeyData, 'foo', 0)
- myIdentifier = self.client.subscribeUSK(key)
- self.assertHasNextMessage(
- 'SubscribeUSK',
- ('URI', key),
- )
-
-
- def XXXtest_200_subscribeUSK(self):
- self.connectClient()
- myIdentifier = self.client.subscribeUSK('arbitrary-key')
- myRequest = self.client.getRequest(myIdentifier)
- requestsAll = self.client.getRequests()
- self.failUnless(myIdentifier in requestsAll)
- myRequest = self.client.getRequest(myIdentifier)
- self.assertEqual(myRequest['RequestType'], self.client.consts.RequestType.SubscribeUSK)
-
- self.assertHasNextMessage(
- 'SubscribeUSK',
- ('URI', 'arbitrary-key'),
- )
- self.failUnless(myIdentifier in requestsAll)
-
- # usk update requests are permanent, so the completed flag shuld always be set
- myRequest['RequestStatus'] == self.client.consts.RequestStatus.Completed
-
- self.sendResponseMessage(
- 'SubscribedUSKUpdate',
- Edition=99,
- Identifier=myIdentifier,
- URI='arbitrary-uri'
- )
-
- self.assertHasNextEvent(
- self.client.events.USKUpdated,
- 'SubscribeUSK',
- ('Edition', 99),
- ('Identifier', myIdentifier),
- ('URI', 'arbitrary-key'),
- )
-
-
-
-
-###################################################
-###################################################
-###################################################
-
-
#***********************************************************************************
#
#***********************************************************************************
-class TestDisconnectReason(BaseTestClient):
+class Test_disconnectReason(BaseTestClient):
def test_1000_DuplicateClientName(self):
-
+ self.connectClient()
self.sendResponseMessage('CloseConnectionDuplicateClientName')
msg = self.assertHasNextEvent(
self.client.events.ClientDisconnected,
consts.Message.ClientDisconnected,
('DisconnectReason', consts.DisconnectReason.DuplicateClientName),
)
- self.failUnless('Param' in msg.params)
- self.assertEqual(msg['Param'], None)
-
+
self.failIf(self.ioOpen())
self.assertHasNextEvent(None)
- #print self.client.test_messagesSend[0].name
self.assertHasNextMessage(None)
-
- self.connectClient()
+
-
def test_1001_SocketDied_Receive(self):
-
+ self.connectClient()
self.getIO().setBroken(True)
- self.assertRaises(iohandler.IOBroken, self.client.next)
+ self.assertRaises(consts.IOBrokenError, self.client.next)
# check if ClientDisconnected events has been triggered
msg = self.assertHasNextEvent(
self.client.events.ClientDisconnected,
consts.Message.ClientDisconnected,
- ('DisconnectReason', consts.DisconnectReason.SocketDied),
- #('Param', ClientSocketDiedMessage) # can not test here
+ ('DisconnectReason', consts.DisconnectReason.ConnectionDied),
)
- self.failUnless('Param' in msg.params)
- # Param is now details of IOBroken exception, no idea how to test
- #self.assertEqual(msg['Param'].name, consts.Message.ClientSocketDied)
-
+
self.failIf(self.ioOpen())
self.assertHasNextEvent(None)
self.assertHasNextMessage(None)
@@ -1451,23 +1384,19 @@
def test_1002_SocketDied_Send(self):
-
+ self.connectClient()
self.getIO().setBroken(True)
# send a test message
- self.assertRaises(iohandler.IOBroken, self.client.sendMessage, message.newMessageType('test')())
+ self.assertRaises(consts.IOBrokenError, self.client.sendMessage, message.newMessageType('test')())
# check if ClientDisconnected events has been triggered
msg = self.assertHasNextEvent(
self.client.events.ClientDisconnected,
consts.Message.ClientDisconnected,
- ('DisconnectReason', consts.DisconnectReason.SocketDied),
- #('Param', ClientSocketDiedMessage) # can not test here
+ ('DisconnectReason', consts.DisconnectReason.ConnectionDied),
)
- self.failUnless('Param' in msg.params)
- # Param is now details of IOBroken exception, no idea how to test
- #self.assertEqual(msg['Param'].name, consts.Message.ClientSocketDied)
-
+
self.failIf(self.ioOpen())
self.assertHasNextEvent(None)
self.assertHasNextMessage(None)
@@ -1475,9 +1404,9 @@
def test_1003_Shutdown(self):
+ self.connectClient()
+ self.client.closeNode()
- self.client.closeFreenet()
-
msg = self.assertHasNextMessage(consts.Message.Shutdown)
self.sendResponseMessage(
'ProtocolError',
@@ -1488,13 +1417,9 @@
msg = self.assertHasNextEvent(
self.client.events.ClientDisconnected,
consts.Message.ClientDisconnected,
- ('DisconnectReason', consts.DisconnectReason.Shutdown)
- #('Param', NodeHelloMessage) # can not test here
+ ('DisconnectReason', consts.DisconnectReason.NodeClosing)
)
- self.failUnless('Param' in msg.params)
- self.assertEqual(msg['Param'], None)
-
self.failIf(self.ioOpen())
self.assertHasNextEvent(None)
self.assertHasNextMessage(None)
@@ -1503,9 +1428,8 @@
def test_1004_VersionMismatch(self):
-
for n, nodeHello in enumerate(self.client.iterConnect(duration=1, timeout=0.1)):
- if n == 1:
+ if n == 2:
self.assertHasNextMessage(
consts.Message.ClientHello
)
@@ -1530,11 +1454,8 @@
self.client.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.failIf(self.ioOpen())
self.assertHasNextEvent(None)
self.assertHasNextMessage(None)
@@ -1543,7 +1464,7 @@
#***********************************************************************************
#
#***********************************************************************************
-class TestClientGet(BaseTestClient):
+class Test_clientGet(BaseTestClient):
def test_2000_ClientGetRegistered(self):
@@ -1969,7 +1890,7 @@
# SSK@, USK@
# putFile / PutDir TestDDA
-class TestClientPut(BaseTestClient):
+class Test_clientPut(BaseTestClient):
def testPutRedirect_Success(self):
# request a arbitrary file
@@ -2351,13 +2272,16 @@
#***********************************************************************************
#
#***********************************************************************************
-class TestRequests(BaseTestClient):
+class Test_requests(BaseTestClient):
def test_3000_ModifyRequest_Persistent(self):
-
+ self.connectClient()
+
+
# request a arbitrary file
+ myKey = self.client.key.key('KSK@foo')
myIdentifier = self.client.getFile(
- 'arbitrary-uri',
+ myKey,
'arbitryry.txt',
persistentUserData='foo',
priorityClass=consts.Priority.Medium,
@@ -2401,10 +2325,12 @@
def test_3001_ModifyRequest_NonPersistent(self):
-
+ self.connectClient()
+
# request a arbitrary file
+ myKey = self.client.key.key('KSK@foo')
myIdentifier = self.client.getFile(
- 'arbitrary-uri',
+ myKey,
'arbitryry.txt',
persistentUserData='foo',
priorityClass=consts.Priority.Medium,
@@ -2448,11 +2374,13 @@
self.failIf(requestsAll)
- def test_3002_RemoveRequest_NonPersistent(self):
-
+ def test_3002_RemoveRequest(self):
+ self.connectClient()
+
# request a file
+ myKey = self.client.key.key('KSK@foo')
myIdentifier = self.client.getFile(
- 'arbitrary-uri',
+ myKey,
'arbitrary.txt'
)
myRequest = self.client.getRequest(myIdentifier)
@@ -2472,125 +2400,42 @@
# now cancel request
self.client.removeRequest(myIdentifier)
+ self.assertHasNextMessage('RemoveRequest')
- # of our request should be removed emidiately,
+ # of our request should be marked as removed
self.assertEqual(myRequest['RequestStatus'], consts.RequestStatus.Removed |
- consts.RequestStatus.RemovedFromQueue |
consts.RequestStatus.Completed
)
- self.failIf(myIdentifier in self.client.getRequests())
-
- # now the request should have been removed
- self.assertHasNextEvent(
- self.client.events.RequestRemoved,
- consts.Message.ClientGet,
- ('RequestStatus', consts.RequestStatus.Removed |
- consts.RequestStatus.RemovedFromQueue |
- consts.RequestStatus.Completed
- ),
- )
- self.failIf(self.client.getRequests())
- self.assertHasNextEvent(None)
- self.assertHasNextMessage(None)
- self.failIf(requestsAll)
-
-
- def test_3003_RemoveRequest_persistent(self):
-
- # request a file
- myIdentifier = self.client.getFile(
- 'arbitrary-uri',
- 'arbitrary.txt',
- persistence=consts.Persistence.Reboot,
- )
- myRequest = self.client.getRequest(myIdentifier)
- requestsAll = self.client.getRequests()
-
- self.assertHasNextMessage(consts.Message.ClientGet)
-
- # respond to the file request
+ # respond with a Getfailed
self.sendResponseMessage(
- 'PersistentGet',
- Started='false',
- **myRequest.params
+ 'GetFailed',
+ Code='25', # fetch error canceled
+ Identifier=myIdentifier,
)
-
- # ignore events and messages so far
- self.events = []
- self.messages = []
-
- # now cancel request
- self.client.removeRequest(myIdentifier)
- # status of our request should be set to removed emidiately, but it should
- # not be removed from the client
- self.assertEqual(myRequest['RequestStatus'], consts.RequestStatus.Removed | consts.RequestStatus.Completed)
- self.failUnless(myIdentifier in self.client.getRequests())
- # client schould send a RemovePersistentRequest
- self.assertHasNextMessage(consts.Message.RemovePersistentRequest)
-
- # respond with a PersistentRequestRemoved
- self.sendResponseMessage(
- 'PersistentRequestRemoved',
- Identifier=myIdentifier,
- )
-
# now the request should have been removed
- self.failUnless(myRequest['RequestStatus'] & consts.RequestStatus.RemovedFromQueue)
- self.failUnless(myRequest['RequestStatus'] & consts.RequestStatus.Completed)
self.assertHasNextEvent(
self.client.events.RequestRemoved,
consts.Message.ClientGet,
('RequestStatus', consts.RequestStatus.Removed |
- consts.RequestStatus.RemovedFromQueue |
- consts.RequestStatus.Completed
- ),
+ consts.RequestStatus.RemovedFromQueue |
+ consts.RequestStatus.Completed
+ ),
)
-
- self.failIf(self.client.getRequests())
- self.assertHasNextEvent(None)
- self.assertHasNextMessage(None)
-
- self.failIf(requestsAll)
-
-
-
- def test_3004_ResendRequest_NonPersistent(self):
-
- myIdentifier = self.client.getData('any-key')
- myRequest = self.client.getRequest(myIdentifier)
- requestsAll = self.client.getRequests()
- self.assertHasNextMessage(consts.Message.ClientGet)
-
- newIdentifier = self.client.resendRequest(myRequest)
-
- # client should remove old request emidiately
- self.failIf(myIdentifier == newIdentifier)
self.failIf(myIdentifier in requestsAll)
- self.failUnless(newIdentifier in requestsAll)
- self.assertHasNextEvent(
- self.client.events.RequestRemoved,
- consts.Message.ClientGet,
- ('RequestStatus', consts.RequestStatus.Removed |
- consts.RequestStatus.RemovedFromQueue |
- consts.RequestStatus.Completed
- ),
- )
-
- self.assertHasNextMessage(consts.Message.ClientGet)
-
self.assertHasNextEvent(None)
self.assertHasNextMessage(None)
- del requestsAll[newIdentifier]
self.failIf(requestsAll)
+
-
def test_3005_ResendRequest_Persistent(self):
+ self.connectClient()
- myIdentifier = self.client.getData('any-key', persistence=consts.Persistence.Reboot)
+ myKey = self.client.key.key('KSK@foo')
+ myIdentifier = self.client.getData(myKey, persistence=consts.Persistence.Reboot)
myRequest = self.client.getRequest(myIdentifier)
requestsAll = self.client.getRequests()
self.assertHasNextMessage(consts.Message.ClientGet)
@@ -2601,7 +2446,7 @@
# client should remove request from nodes queue
self.assertHasNextMessage(
- consts.Message.RemovePersistentRequest,
+ consts.Message.RemoveRequest,
('Identifier', myIdentifier)
)
self.assertHasNextMessage(
@@ -2609,9 +2454,13 @@
('Identifier', newIdentifier)
)
self.sendResponseMessage(
- 'PersistentRequestRemoved',
+ 'GetFailed',
+ Code='25',
Identifier=myIdentifier,
)
+
+
+
self.assertHasNextEvent(
self.client.events.RequestRemoved,
consts.Message.ClientGet,
@@ -2632,7 +2481,7 @@
#
#***********************************************************************************
#TODO: testRestoreClientPut and friends
-class TestRestoreRequests(BaseTestClient):
+class Test_restoreRequests(BaseTestClient):
def test_4000_RestorePersistentGet_InvalidClientToken(self):
@@ -2718,13 +2567,15 @@
#TODO: testDDAWriteDenied
#TODO: testDDAWriteDenied_WriteDisallowed
-class TestDDA(BaseTestClient):
+class Test_DDA(BaseTestClient):
def test_5000_DDAWriteDenied(self):
-
+ self.connectClient()
+
# request a file
+ myKey = self.client.key.key('KSK@foo')
myIdentifier = self.client.getFile(
- 'arbitrary-uri',
+ myKey,
os.path.join(DIR, 'DDATest.txt')
)
myRequest = self.client.getRequest(myIdentifier)
@@ -2821,10 +2672,12 @@
class TestCollisions(BaseTestClient):
def test_6000_IdentifierCollision(self):
-
+ self.connectClient()
+
# request a file
+ myKey = self.client.key.key('KSK@foo')
myIdentifier = self.client.getFile(
- 'arbitrary-uri',
+ myKey,
os.path.join(DIR, 'test.txt')
)
myRequest = self.client.getRequest(myIdentifier)
@@ -2863,14 +2716,16 @@
def test_6001_FilenameCollision_HandleRename(self):
-
+ self.connectClient()
+
# request a file
fpath = os.path.join(DIR, 'test.txt')
open(fpath, 'wb').close()
self.tmpfiles.append(fpath)
+ myKey = self.client.key.key('KSK@foo')
myIdentifier = self.client.getFile(
- 'arbitrary-uri',
+ myKey,
fpath,
filenameCollision=consts.FilenameCollision.HandleRename,
)
@@ -2917,14 +2772,16 @@
def test_6002_FilenameCollision_HandleNever(self):
-
+ self.connectClient()
+
# request a file
fpath = os.path.join(DIR, 'test.txt')
open(fpath, 'wb').close()
self.tmpfiles.append(fpath)
+ myKey = self.client.key.key('KSK@foo')
myIdentifier = self.client.getFile(
- 'arbitrary-uri',
+ myKey,
fpath,
filenameCollision=consts.FilenameCollision.HandleNever,
)
@@ -2967,7 +2824,7 @@
#
#***********************************************************************************
#TODO: some tests not yet implemented
-class TestResendRequests(BaseTestClient):
+class Test_resendRequests(BaseTestClient):
def test_resend_CHK(self):
myKey = 'CHK@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,AAAAAAA/foo'
@@ -3073,11 +2930,11 @@
#***********************************************************************************
#
#***********************************************************************************
-class TestPlugins(BaseTestClient):
+class Test_plugins(BaseTestClient):
def testGet_8000_PluginInfo_Success(self):
-
+ self.connectClient()
myIdentifier = self.client.getPluginInfo('hi there')
myRequest = self.client.getRequest(myIdentifier)
requestsAll = self.client.getRequests()
@@ -3117,6 +2974,7 @@
def test_8001_GetPluginInfo_Failure(self):
+ self.connectClient()
myIdentifier = self.client.getPluginInfo('hi there')
myRequest = self.client.getRequest(myIdentifier)
requestsAll = self.client.getRequests()
@@ -3155,7 +3013,7 @@
def test_8002_SendPluginMessage_Success(self):
-
+ self.connectClient()
myIdentifier = '123456789'
myRequest = self.client.sendPluginMessage('hi there', myIdentifier, {'foo': "bar"})
requestsAll = self.client.getRequests()
@@ -3190,6 +3048,7 @@
def test_8003_GetSendPluginMessage_Failure(self):
+ self.connectClient()
myIdentifier = '1234567889'
myRequest = self.client.sendPluginMessage('hi there', myIdentifier, {'foo': "bar"})
requestsAll = self.client.getRequests()
@@ -3222,6 +3081,7 @@
def test_8003_GetSendPluginMessage_Identifiercollision(self):
+ self.connectClient()
myIdentifier = '1234567889'
myRequest = self.client.sendPluginMessage('hi there', myIdentifier, {'foo': "bar"})
requestsAll = self.client.getRequests()
@@ -3258,27 +3118,31 @@
#***********************************************************************************
#
#***********************************************************************************
-class TestGenerateKeypair(BaseTestClient):
+class Test_generateKeypair(BaseTestClient):
def test_10000_GeberateSSKKeypair(self):
+ self.connectClient()
+
myIdentifier = self.client.generateKeypair(consts.KeyType.SSK)
myRequest = self.client.getRequest(myIdentifier)
requestsAll = self.client.getRequests()
self.assertHasNextMessage(consts.Message.GenerateSSK)
+ priv = self.client.key.key('SSK@' + self.client.key.DummyKeyData + '/priv')
+ pub = self.client.key.key('SSK@' + self.client.key.DummyKeyData + '/pub')
self.sendResponseMessage(
'SSKKeypair',
Identifier=myIdentifier,
- RequestURI='SSK@public',
- InsertURI='SSK@private',
+ RequestURI=pub,
+ InsertURI=priv,
)
msg = self.assertHasNextEvent(
self.client.events.KeypairGenerated,
consts.Message.GenerateSSK,
('Identifier', myIdentifier),
- ('PublicKey','SSK@public'),
- ('PrivateKey','SSK@private'),
+ ('PublicKey',pub),
+ ('PrivateKey',priv),
('RequestStatus', consts.RequestStatus.Success |
consts.RequestStatus.RemovedFromQueue |
consts.RequestStatus.Completed
@@ -3293,24 +3157,30 @@
def test_10001_GeberateUSKKeypair(self):
+ self.connectClient()
+
myIdentifier = self.client.generateKeypair(consts.KeyType.USK)
myRequest = self.client.getRequest(myIdentifier)
requestsAll = self.client.getRequests()
self.assertHasNextMessage(consts.Message.GenerateSSK)
+ priv = self.client.key.key('SSK@' + self.client.key.DummyKeyData + '/priv')
+ pub = self.client.key.key('SSK@' + self.client.key.DummyKeyData + '/pub')
self.sendResponseMessage(
'SSKKeypair',
Identifier=myIdentifier,
- RequestURI='SSK@public',
- InsertURI='SSK@private',
+ RequestURI=pub,
+ InsertURI=priv,
)
+ priv = self.client.key.USK(priv.keyData, filename=priv.filename)
+ pub = self.client.key.USK(pub.keyData, filename=pub.filename)
msg = self.assertHasNextEvent(
self.client.events.KeypairGenerated,
consts.Message.GenerateSSK,
('Identifier', myIdentifier),
- ('PublicKey','USK@public'),
- ('PrivateKey','USK@private'),
+ ('PublicKey',pub),
+ ('PrivateKey',priv),
('RequestStatus', consts.RequestStatus.Success |
consts.RequestStatus.RemovedFromQueue |
consts.RequestStatus.Completed
@@ -3323,44 +3193,46 @@
self.assertHasNextMessage(None)
self.failIf(requestsAll)
-
#***********************************************************************************
#
#***********************************************************************************
-class TestSubscribeUSK(BaseTestClient):
-
-
- def test_11000_Subscribe(self):
- myIdentifier = self.client.subscribeUSK('arbitrary')
+class Test_subscribeUSK(BaseTestClient):
+
+ def test_100_subscribeUSK(self):
+ self.connectClient()
+
+ myKey = self.client.key.USK(client.key.DummyKeyData, 'foo', 0)
+ myIdentifier = self.client.subscribeUSK(myKey)
myRequest = self.client.getRequest(myIdentifier)
requestsAll = self.client.getRequests()
-
self.failUnless(myIdentifier in requestsAll)
- self.failUnless(myRequest['RequestStatus'] & consts.RequestStatus.Completed)
+ myRequest = self.client.getRequest(myIdentifier)
+ self.assertEqual(myRequest['RequestType'], self.client.consts.RequestType.SubscribeUSK)
+
+ self.assertHasNextMessage(
+ 'SubscribeUSK',
+ ('URI', myKey),
+ )
+ self.failUnless(myIdentifier in requestsAll)
- self.assertHasNextMessage(consts.Message.SubscribeUSK)
+ # usk update requests are permanent, so the completed flag shuld always be set
+ myRequest['RequestStatus'] == self.client.consts.RequestStatus.Completed
+
self.sendResponseMessage(
'SubscribedUSKUpdate',
- Identifier=myIdentifier,
Edition=99,
- URI='arbitryry/99/',
+ Identifier=myIdentifier,
+ URI=myKey
)
-
- msg = self.assertHasNextEvent(
+
+ self.assertHasNextEvent(
self.client.events.USKUpdated,
- consts.Message.SubscribedUSKUpdate,
- ('Identifier', myIdentifier),
+ 'SubscribeUSK',
('Edition', 99),
- ('URI', 'arbitryry/99/'),
+ ('Identifier', myIdentifier),
+ ('URI', myKey),
)
- self.assertHasNextEvent(None)
- self.assertHasNextMessage(None)
-
- del requestsAll[myIdentifier]
- self.failIf(requestsAll)
-
-
-
+
#*********************************************************************************
#
#*********************************************************************************
@@ -3386,19 +3258,18 @@
Test_getData,
Test_getFile,
Test_getKeyInfo,
- Test_subscribeUSK,
+ Test_disconnectReason,
- #TestDisconnectReason,
- #TestClientGet,
- #TestClientPut,
- #TestRequests,
- #TestRestoreRequests,
- #TestResendRequests,
- #TestDDA,
- #TestCollisions,
- #TestPlugins,
- #TestGenerateKeypair,
- #TestSubscribeUSK,
+ #Test_clientGet,
+ #Test_clientPut,
+ Test_requests,
+ #Test_restoreRequests,
+ #Test_resendRequests,
+ Test_DDA,
+ TestCollisions,
+ Test_plugins,
+ Test_generateKeypair,
+ Test_subscribeUSK,
)
suite = unittest.TestSuite()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|