def test02props(self): """ test properties """ # # valid values operation = Operation() operation.OperationID = 1 self.assertEqual(operation.OperationID, 1, "wrong OperationID") operation.OperationID = "1" self.assertEqual(operation.OperationID, 1, "wrong OperationID") operation.Arguments = "foobar" self.assertEqual(operation.Arguments, "foobar", "wrong Arguments") operation.SourceSE = "CERN-RAW" self.assertEqual(operation.SourceSE, "CERN-RAW", "wrong SourceSE") operation.TargetSE = "CERN-RAW" self.assertEqual(operation.TargetSE, "CERN-RAW", "wrong TargetSE") operation.Catalog = "" self.assertEqual(operation.Catalog, "", "wrong Catalog") operation.Catalog = "BookkeepingDB" self.assertEqual(operation.Catalog, "BookkeepingDB", "wrong Catalog") operation.Error = "error" self.assertEqual(operation.Error, "error", "wrong Error") # # wrong props try: operation.RequestID = "foo" except Exception, error: self.assertEqual(type(error), AttributeError, "wrong exc raised") self.assertEqual(str(error), "can't set attribute", "wrong exc reason")
def test02props( self ): """ test properties """ # # valid values operation = Operation() operation.OperationID = 1 self.assertEqual( operation.OperationID, 1, "wrong OperationID" ) operation.OperationID = "1" self.assertEqual( operation.OperationID, 1, "wrong OperationID" ) operation.Arguments = "foobar" self.assertEqual( operation.Arguments, "foobar", "wrong Arguments" ) operation.SourceSE = "CERN-RAW" self.assertEqual( operation.SourceSE, "CERN-RAW", "wrong SourceSE" ) operation.TargetSE = "CERN-RAW" self.assertEqual( operation.TargetSE, "CERN-RAW", "wrong TargetSE" ) operation.Catalog = "" self.assertEqual( operation.Catalog, "", "wrong Catalog" ) operation.Catalog = "BookkeepingDB" self.assertEqual( operation.Catalog, "BookkeepingDB", "wrong Catalog" ) operation.Error = "error" self.assertEqual( operation.Error, "error", "wrong Error" ) # # wrong props try: operation.RequestID = "foo" except Exception, error: self.assertEqual( type( error ), AttributeError, "wrong exc raised" ) self.assertEqual( str( error ), "can't set attribute", "wrong exc reason" )
def test05List(self): """ getitem, setitem, delitem and dirty """ op = Operation() files = [] for i in range(5): f = File() files.append(f) op += f for i in range(len(op)): self.assertEqual(op[i], files[i], "__getitem__ failed") for i in range(len(op)): op[i] = File({"LFN": "/%s" % i}) self.assertEqual(op[i].LFN, "/%s" % i, "__setitem__ failed") del op[0] self.assertEqual(len(op), 4, "__delitem__ failed") # # opID set op.OperationID = 1 del op[0] self.assertEqual(op.cleanUpSQL(), None, "cleanUp failed after __delitem__") op[0].FileID = 1 del op[0] self.assertEqual( op.cleanUpSQL(), "DELETE FROM `File` WHERE `OperationID` = 1 AND `FileID` IN (1);\n", "cleanUp failed after __delitem__") op[0].FileID = 2 op[0] = File({"FileID": 2}) self.assertEqual( op.cleanUpSQL(), "DELETE FROM `File` WHERE `OperationID` = 1 AND `FileID` IN (1,2);\n", "cleanUp failed after __setitem__") json = op.toJSON() self.assertEqual("__dirty" in json["Value"], True, "missing __dirty") op2 = Operation(json["Value"]) self.assertEqual( op2.cleanUpSQL(), "DELETE FROM `File` WHERE `OperationID` = 1 AND `FileID` IN (1,2);\n", "cleanUp failed after JSON")
def test05List( self ): """ getitem, setitem, delitem and dirty """ op = Operation() files = [] for i in range( 5 ): f = File() files.append( f ) op += f for i in range( len( op ) ): self.assertEqual( op[i], files[i], "__getitem__ failed" ) for i in range( len( op ) ): op[i] = File( {"LFN": "/%s" % i } ) self.assertEqual( op[i].LFN, "/%s" % i, "__setitem__ failed" ) del op[0] self.assertEqual( len( op ), 4, "__delitem__ failed" ) # # opID set op.OperationID = 1 del op[0] self.assertEqual( op.cleanUpSQL(), None, "cleanUp failed after __delitem__" ) op[0].FileID = 1 del op[0] self.assertEqual( op.cleanUpSQL(), "DELETE FROM `File` WHERE `OperationID` = 1 AND `FileID` IN (1);\n", "cleanUp failed after __delitem__" ) op[0].FileID = 2 op[0] = File( {"FileID": 2 } ) self.assertEqual( op.cleanUpSQL(), "DELETE FROM `File` WHERE `OperationID` = 1 AND `FileID` IN (1,2);\n", "cleanUp failed after __setitem__" ) json = op.toJSON() self.assertEqual( "__dirty" in json["Value"], True, "missing __dirty" ) op2 = Operation( json["Value"] ) self.assertEqual( op2.cleanUpSQL(), "DELETE FROM `File` WHERE `OperationID` = 1 AND `FileID` IN (1,2);\n", "cleanUp failed after JSON" )
def test_List(): """getitem, setitem, delitem and dirty""" op = Operation() files = [] for _ in range(5): f = File() files.append(f) op += f for i in range(len(op)): assert op[i] == files[i], "__getitem__ failed" for i in range(len(op)): op[i] = File({"LFN": "/%s" % i}) assert op[i].LFN == "/%s" % i, "__setitem__ failed" del op[0] assert len(op) == 4, "__delitem__ failed" # opID set op.OperationID = 1 del op[0]
def test05List( self ): """ getitem, setitem, delitem and dirty """ op = Operation() files = [] for i in range( 5 ): f = File() files.append( f ) op += f for i in range( len( op ) ): self.assertEqual( op[i], files[i], "__getitem__ failed" ) for i in range( len( op ) ): op[i] = File( {"LFN": "/%s" % i } ) self.assertEqual( op[i].LFN, "/%s" % i, "__setitem__ failed" ) del op[0] self.assertEqual( len( op ), 4, "__delitem__ failed" ) # # opID set op.OperationID = 1 del op[0]
def test05List(self): """ getitem, setitem, delitem and dirty """ op = Operation() files = [] for i in range(5): f = File() files.append(f) op += f for i in range(len(op)): self.assertEqual(op[i], files[i], "__getitem__ failed") for i in range(len(op)): op[i] = File({"LFN": "/%s" % i}) self.assertEqual(op[i].LFN, "/%s" % i, "__setitem__ failed") del op[0] self.assertEqual(len(op), 4, "__delitem__ failed") # # opID set op.OperationID = 1 del op[0]
"wrong exc reason") # # parent set, no OperationID, INSERT request.addOperation(operation) toSQL = operation.toSQL() self.assertEqual(toSQL["OK"], True, "toSQL error") self.assertEqual(toSQL["Value"].startswith("INSERT"), True, "OperationID not set, but SQL start with UPDATE") op2 = Operation() op2.Type = "RemoveReplica" request.insertBefore(op2, operation) # # OperationID set = UPDATE operation.OperationID = 1 toSQL = operation.toSQL() self.assertEqual(toSQL["OK"], True, "toSQL error") self.assertEqual(toSQL["Value"].startswith("UPDATE"), True, "OperationID set, but SQL starts with INSERT") def test04StateMachine(self): """ state machine """ op = Operation() self.assertEqual(op.Status, "Queued", "1. wrong status %s" % op.Status) op.addFile(File({"Status": "Waiting"})) self.assertEqual(op.Status, "Queued", "2. wrong status %s" % op.Status) op.addFile(File({"Status": "Scheduled"})) self.assertEqual(op.Status, "Queued", "3. wrong status %s" % op.Status)
self.assertEqual( isinstance( error, AttributeError ), True, "wrong exc raised" ) self.assertEqual( str( error ), "RequestID not set", "wrong exc reason" ) # # parent set, no OperationID, INSERT request.addOperation( operation ) toSQL = operation.toSQL() self.assertEqual( toSQL["OK"], True, "toSQL error" ) self.assertEqual( toSQL["Value"].startswith( "INSERT" ), True, "OperationID not set, but SQL start with UPDATE" ) op2 = Operation() op2.Type = "RemoveReplica" request.insertBefore( op2, operation ) # # OperationID set = UPDATE operation.OperationID = 1 toSQL = operation.toSQL() self.assertEqual( toSQL["OK"], True, "toSQL error" ) self.assertEqual( toSQL["Value"].startswith( "UPDATE" ), True, "OperationID set, but SQL starts with INSERT" ) def test04StateMachine( self ): """ state machine """ op = Operation() self.assertEqual( op.Status, "Queued", "1. wrong status %s" % op.Status ) op.addFile( File( {"Status": "Waiting"} ) ) self.assertEqual( op.Status, "Queued", "2. wrong status %s" % op.Status ) op.addFile( File( {"Status": "Scheduled" } ) ) self.assertEqual( op.Status, "Queued", "3. wrong status %s" % op.Status )
def test02props(self): """ test properties """ # # valid values operation = Operation() operation.Arguments = "foobar" self.assertEqual(operation.Arguments, "foobar", "wrong Arguments") operation.SourceSE = "CERN-RAW" self.assertEqual(operation.SourceSE, "CERN-RAW", "wrong SourceSE") operation.TargetSE = "CERN-RAW" self.assertEqual(operation.TargetSE, "CERN-RAW", "wrong TargetSE") operation.Catalog = "" self.assertEqual(operation.Catalog, "", "wrong Catalog") operation.Catalog = "BookkeepingDB" self.assertEqual(operation.Catalog, "BookkeepingDB", "wrong Catalog") operation.Error = "error" self.assertEqual(operation.Error, "error", "wrong Error") # # wrong props try: operation.RequestID = "foo" except Exception as error: self.assertEqual(type(error), AttributeError, "wrong exc raised") self.assertEqual(str(error), "can't set attribute", "wrong exc reason") try: operation.OperationID = "foo" except Exception as error: self.assertEqual(type(error), ValueError, "wrong exc raised") # # timestamps try: operation.SubmitTime = "foo" except Exception as error: self.assertEqual(type(error), ValueError, "wrong exp raised") self.assertEqual( str(error), "time data 'foo' does not match format '%Y-%m-%d %H:%M:%S'", "wrong exc reason") try: operation.LastUpdate = "foo" except Exception as error: self.assertEqual(type(error), ValueError, "wrong exc raised") self.assertEqual( str(error), "time data 'foo' does not match format '%Y-%m-%d %H:%M:%S'", "wrong exc reason") # # Status operation = Operation() try: operation.Status = "foo" except Exception as error: self.assertEqual(type(error), ValueError, "wrong exc raised") self.assertEqual(str(error), "unknown Status 'foo'", "wrong exc reason") operation.addFile(File({"Status": "Waiting", "LFN": "/a"}))