Esempio n. 1
0
    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")
Esempio n. 2
0
  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" )
Esempio n. 3
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]
        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")
Esempio n. 4
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]
    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" )
Esempio n. 5
0
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]
Esempio n. 6
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]
Esempio n. 7
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]
Esempio n. 8
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)
Esempio n. 9
0
      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 )
Esempio n. 10
0
    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"}))