def testModelCommandResultSerializableStateWithNonZeroStatus(self):
    commandID = 1
    method = "testMethod"
    status = 1
    errorMessage = "something bad happened"
    commandResult = ModelCommandResult(commandID=commandID, method=method,
                                       status=status, errorMessage=errorMessage)
    self.assertEqual(commandResult.commandID, commandID)
    self.assertEqual(commandResult.method, method)
    self.assertEqual(commandResult.status, status)
    self.assertEqual(commandResult.errorMessage, errorMessage)
    self.assertIsNone(commandResult.args)
    self.assertIn("ModelCommandResult<", str(commandResult))
    self.assertIn("ModelCommandResult<", repr(commandResult))

    commandResult2 = _ModelRequestResultBase.__createFromState__(
      commandResult.__getstate__())

    self.assertEqual(commandResult2.commandID, commandID)
    self.assertEqual(commandResult2.method, method)
    self.assertEqual(commandResult2.status, status)
    self.assertEqual(commandResult2.errorMessage, errorMessage)
    self.assertIsNone(commandResult2.args)
    self.assertIn("ModelCommandResult<", str(commandResult2))
    self.assertIn("ModelCommandResult<", repr(commandResult2))
  def testModelInputRowConstructorFromSerializableState(self):
    rowID = 1
    data = [1, 2, datetime.datetime.utcnow()]
    inputRow = ModelInputRow(rowID=rowID, data=copy.copy(data))
    self.assertEqual(inputRow.rowID, rowID)
    self.assertEqual(inputRow.data, data)
    self.assertIn("ModelInputRow<", str(inputRow))
    self.assertIn("ModelInputRow<", repr(inputRow))

    inputRow2 = _ModelRequestResultBase.__createFromState__(
      inputRow.__getstate__())

    self.assertEqual(inputRow2.rowID, rowID)
    self.assertEqual(inputRow2.data, data)
    self.assertIn("ModelInputRow<", str(inputRow2))
    self.assertIn("ModelInputRow<", repr(inputRow2))
  def testModelCommandSerializableState(self):
    commandID = 1
    method = "defineModel"
    args = {'key1': 4098, 'key2': 4139}
    command = ModelCommand(commandID=commandID, method=method,
                           args=copy.copy(args))
    self.assertEqual(command.commandID, commandID)
    self.assertEqual(command.method, method)
    self.assertEqual(command.args, args)

    command2 = _ModelRequestResultBase.__createFromState__(
      command.__getstate__())

    self.assertEqual(command2.commandID, commandID)
    self.assertEqual(command2.method, method)
    self.assertEqual(command2.args, args)

    self.assertIn("ModelCommand<", str(command2))
    self.assertIn("ModelCommand<", repr(command2))
  def testModelInferenceResultSerializableStateWithErrorMessage(self):
    rowID = 1
    status = 1
    errorMessage = "error"
    inferenceResult = ModelInferenceResult(rowID=rowID, status=status,
      errorMessage=errorMessage)
    self.assertEqual(inferenceResult.rowID, rowID)
    self.assertEqual(inferenceResult.status, status)
    self.assertEqual(inferenceResult.errorMessage, errorMessage)
    self.assertIsNone(inferenceResult.anomalyScore)
    self.assertIn("ModelInferenceResult<", str(inferenceResult))
    self.assertIn("ModelInferenceResult<", repr(inferenceResult))

    inferenceResult2 = _ModelRequestResultBase.__createFromState__(
      inferenceResult.__getstate__())

    self.assertEqual(inferenceResult2.rowID, rowID)
    self.assertEqual(inferenceResult2.status, status)
    self.assertEqual(inferenceResult2.errorMessage, errorMessage)
    self.assertIsNone(inferenceResult2.anomalyScore)
    self.assertIn("ModelInferenceResult<", str(inferenceResult2))
    self.assertIn("ModelInferenceResult<", repr(inferenceResult2))
  def _implModelCommandResultSerializableStateWithZeroStatus(self, args):
    commandID = 1
    method = "testMethod"
    status = 0
    commandResult = ModelCommandResult(commandID=commandID, method=method,
                                       status=status, args=copy.copy(args))
    self.assertEqual(commandResult.commandID, commandID)
    self.assertEqual(commandResult.method, method)
    self.assertEqual(commandResult.status, status)
    self.assertEqual(commandResult.args, args)
    self.assertIsNone(commandResult.errorMessage)

    commandResult2 = _ModelRequestResultBase.__createFromState__(
      commandResult.__getstate__())

    self.assertEqual(commandResult2.commandID, commandID)
    self.assertEqual(commandResult2.method, method)
    self.assertEqual(commandResult2.status, status)
    self.assertEqual(commandResult2.args, args)
    self.assertIsNone(commandResult2.errorMessage)
    self.assertIn("ModelCommandResult<", str(commandResult2))
    self.assertIn("ModelCommandResult<", repr(commandResult2))