SF.net SVN: fclient: [299] trunk/sandbox/fcp2/test_fcp/test_client.py
Status: Pre-Alpha
Brought to you by:
jurner
|
From: <ju...@us...> - 2008-02-27 16:56:00
|
Revision: 299
http://fclient.svn.sourceforge.net/fclient/?rev=299&view=rev
Author: jurner
Date: 2008-02-27 08:56:03 -0800 (Wed, 27 Feb 2008)
Log Message:
-----------
added some tests for ClientPut et al
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-02-27 16:55:41 UTC (rev 298)
+++ trunk/sandbox/fcp2/test_fcp/test_client.py 2008-02-27 16:56:03 UTC (rev 299)
@@ -47,6 +47,9 @@
# deepcopy here, we need exact state
msg = copy.deepcopy(msg)
self.test_messagesSend.append(msg)
+
+ def clearMessagesSend(self):
+ self.test_messagesSend = []
#***********************************************************************************
#
@@ -139,6 +142,15 @@
msg = copy.deepcopy(msg)
self.events.append( (event, msg) )
+
+ def clearClient(self):
+ """Clears all messages send, requests registered and events triggered so far"""
+ # clean up the mess we eventaully left behinf
+ self.events = []
+ self.fcpClient.clearMessagesSend()
+ self.fcpClient._requests = {}
+
+
def connectClient(self):
"""Connects to the client"""
for n, nodeHello in enumerate(self.fcpClient.iterConnect(duration=20, timeout=0.1)):
@@ -230,6 +242,16 @@
param3=None,
param4=None,
param5=None,
+ param6=None,
+ param7=None,
+ param8=None,
+ param9=None,
+ param10=None,
+ param11=None,
+ param12=None,
+ param13=None,
+ param14=None,
+ param15=None,
data=None
):
"""Tests if we received a certain message from the client
@@ -265,7 +287,47 @@
param5, value5 = param5
self.failUnless(param5 in msg.params)
self.assertEqual(value5, msg[param5])
-
+ if param6 is not None:
+ param6, value6 = param6
+ self.failUnless(param6 in msg.params)
+ self.assertEqual(value6, msg[param6])
+ if param7 is not None:
+ param7, value7 = param7
+ self.failUnless(param7 in msg.params)
+ self.assertEqual(value7, msg[param7])
+ if param8 is not None:
+ param8, value8 = param8
+ self.failUnless(param8 in msg.params)
+ self.assertEqual(value8, msg[param8])
+ if param9 is not None:
+ param9, value9 = param9
+ self.failUnless(param9 in msg.params)
+ self.assertEqual(value9, msg[param9])
+ if param10 is not None:
+ param10, value10 = param10
+ self.failUnless(param10 in msg.params)
+ self.assertEqual(value10, msg[param10])
+ if param11 is not None:
+ param11, value11 = param11
+ self.failUnless(param11 in msg.params)
+ self.assertEqual(value11, msg[param11])
+ if param12 is not None:
+ param12, value12 = param12
+ self.failUnless(param12 in msg.params)
+ self.assertEqual(value12, msg[param12])
+ if param13 is not None:
+ param13, value13 = param13
+ self.failUnless(param13 in msg.params)
+ self.assertEqual(value13, msg[param13])
+ if param14 is not None:
+ param14, value14 = param14
+ self.failUnless(param14 in msg.params)
+ self.assertEqual(value14, msg[param14])
+ if param15 is not None:
+ param15, value15 = param15
+ self.failUnless(param15 in msg.params)
+ self.assertEqual(value15, msg[param15])
+
if data is not None:
self.assertEqual(data, msg.data)
return msg
@@ -289,6 +351,7 @@
event -= self._captureEventsFromClient
# clean up tmpfiles
for fpath in self.tmpfiles: os.remove(fpath)
+ self.clearClient()
#***********************************************************************************
#
@@ -956,11 +1019,11 @@
#***********************************************************************************
#TODO:
#
-#
-#
+# SSK@, USK@
+# putFile / PutDir TestDDA
+
class TestClientPut(BaseTestClient):
-
-
+
def testPutRedirect_Success(self):
# request a arbitrary file
myIdentifier = self.fcpClient.putRedirect(
@@ -1025,9 +1088,311 @@
self.failIf(requestsAll)
+ def testCHKPutData_Success(self):
+ # request a arbitrary file
+ myIdentifier = self.fcpClient.chkPutData(
+ 'arbitrary data'
+ )
+ 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='CHK@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 testCHKPutData_Failure(self):
+ # request a arbitrary file
+ myIdentifier = self.fcpClient.chkPutData(
+ 'arbitrary data'
+ )
+ 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)
+
+ def testCHKPutDir_Success(self):
+ # request a arbitrary file
+ myIdentifier = self.fcpClient.chkPutDir(
+ 'myDirectory'
+ )
+ myRequest = self.fcpClient.getRequest(myIdentifier)
+ requestsAll = self.fcpClient.getRequests()
+
+ self.assertHasNextMessage(consts.Message.ClientPutDiskDir)
+ self.failUnless(myIdentifier in requestsAll)
+
+ self.sendResponseMessage(
+ 'PutSuccessful',
+ Identifier=myIdentifier,
+ URI='CHK@my-redirect-name'
+ )
+
+ self.assertHasNextEvent(
+ self.fcpClient.events.RequestCompleted,
+ consts.Message.ClientPutDiskDir,
+ ('FcRequestStatus', consts.RequestStatus.Success |
+ consts.RequestStatus.RemovedFromQueue |
+ consts.RequestStatus.Completed
+ ),
+ )
+
+ self.assertHasNextEvent(None)
+ self.assertHasNextMessage(None)
+ self.failIf(requestsAll)
+
+
+ def testCHKPutDir_Failure(self):
+ # request a arbitrary file
+ myIdentifier = self.fcpClient.chkPutDir(
+ 'myDirectory'
+ )
+ myRequest = self.fcpClient.getRequest(myIdentifier)
+ requestsAll = self.fcpClient.getRequests()
+
+ self.assertHasNextMessage(consts.Message.ClientPutDiskDir)
+ self.failUnless(myIdentifier in requestsAll)
+
+ self.sendResponseMessage(
+ 'PutFailed',
+ Identifier=myIdentifier,
+ Code='5', # rout not found
+ )
+
+ self.assertHasNextEvent(
+ self.fcpClient.events.RequestFailed,
+ consts.Message.ClientPutDiskDir,
+ ('FcRequestStatus', consts.RequestStatus.Error |
+ consts.RequestStatus.RemovedFromQueue |
+ consts.RequestStatus.Completed
+ ),
+ )
+
+ self.assertHasNextEvent(None)
+ self.assertHasNextMessage(None)
+ self.failIf(requestsAll)
+
+
+ def testCHKPutFile_Success(self):
+ # request a arbitrary file
+ myIdentifier = self.fcpClient.chkPutFile(
+ 'myFile.txt'
+ )
+ 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='CHK@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 testCHKPutFile_Failure(self):
+ # request a arbitrary file
+ myIdentifier = self.fcpClient.chkPutFile(
+ 'myFile.txt'
+ )
+ 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)
+
+
+
+ def testCHKPutMultiple_Success(self):
+
+ items = [
+ {
+ 'FcRequestType': consts.RequestType.PutData,
+ 'Data': '12345',
+ 'Name': 'myItem0',
+ },
+ {
+ 'FcRequestType': consts.RequestType.PutFile,
+ 'Filename': 'myFile.txt',
+ 'Name': 'myItem1',
+ },
+ {
+ 'FcRequestType': consts.RequestType.PutRedirect,
+ 'TargetURI': 'CHK@123456789',
+ 'Name': 'myItem2',
+ },
+ {
+ 'FcRequestType': consts.RequestType.PutData,
+ 'Data': '67890',
+ 'Name': 'myItem3',
+ },
+ ]
+
+ # request a arbitrary file
+ myIdentifier = self.fcpClient.chkPutMultiple(
+ items
+ )
+ myRequest = self.fcpClient.getRequest(myIdentifier)
+ requestsAll = self.fcpClient.getRequests()
+
+ msg = self.assertHasNextMessage(
+ consts.Message.ClientPutComplexDir,
+ ('Files.0.Name', 'myItem0'),
+ ('Files.0.UploadFrom', 'direct'),
+ ('Files.0.DataLength', 5),
+
+ ('Files.1.Name', 'myItem1'),
+ ('Files.1.UploadFrom', 'disk'),
+ ('Files.1.Filename', 'myFile.txt'),
+
+ ('Files.2.Name', 'myItem2'),
+ ('Files.2.UploadFrom', 'redirect'),
+ ('Files.2.TargetURI', 'CHK@123456789'),
+
+ ('Files.3.Name', 'myItem3'),
+ ('Files.3.UploadFrom', 'direct'),
+ ('Files.3.DataLength', 5),
+
+ data='1234567890'
+ )
+
+ #for k, v in sorted(msg.params.items()):
+ # print k, v
+
+ self.failUnless(myIdentifier in requestsAll)
+
+ self.sendResponseMessage(
+ 'PutSuccessful',
+ Identifier=myIdentifier,
+ URI='CHK@my-redirect-name'
+ )
+
+ self.assertHasNextEvent(
+ self.fcpClient.events.RequestCompleted,
+ consts.Message.ClientPutComplexDir,
+ ('FcRequestStatus', consts.RequestStatus.Success |
+ consts.RequestStatus.RemovedFromQueue |
+ consts.RequestStatus.Completed
+ ),
+ )
+
+ self.assertHasNextEvent(None)
+ self.assertHasNextMessage(None)
+ self.failIf(requestsAll)
+
+
+ def testCHKPutMultiple_ItemErrors(self):
+
+
+ # upload directory is not allowed
+ items = [
+ {
+ 'FcRequestType': consts.RequestType.PutDir,
+ 'Data': '12345',
+ 'Name': 'myItem0',
+ },
+ ]
+ self.assertRaises(ValueError, self.fcpClient.chkPutMultiple, items)
+
+ #TODO: how to test required params?
+ # ...just some samples below
+
+ # no request type specified
+ items = [
+ {
+ #'FcRequestType': consts.RequestType.PutData,
+ 'Data': '12345',
+ 'Name': 'myItem0',
+ },
+ ]
+ self.assertRaises(ValueError, self.fcpClient.chkPutMultiple, items)
+
+ # param missing (we enforce all required parameters)
+ items = [
+ {
+ 'FcRequestType': consts.RequestType.PutData,
+ #'Data': '12345',
+ #'Name': 'myItem0',
+ },
+ ]
+ self.assertRaises(ValueError, self.fcpClient.chkPutMultiple, items)
+
+
+
+
+
#***********************************************************************************
#
#***********************************************************************************
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|