Skip to content

Util for python code execution and state serialization.

License

Notifications You must be signed in to change notification settings

tamarinvs19/utbot_executor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UtBot Executor

Util for python code execution and state serialization.

Installation

You can install module from PyPI:

python -m pip install utbot-executor

Usage

From console with socket listener

Run with your <hostname> and <port> for socket connection

$ python -m utbot_executor <hostname> <port> <logfile> [<loglevel DEBUG | INFO | ERROR>] <coverage_hostname> <coverage_port>

Request format

{
  "functionName": "f",
  "functionModule": "my_module.submod1",
  "imports": ["sys", "math", "json"],
  "syspaths": ["/home/user/my_project/"],
  "argumentsIds": ["1", "2"],
  "kwargumentsIds": ["4", "5"],
  "serializedMemory": "string",
  "filepath": ["/home/user/my_project/my_module/submod1.py"],
  "coverageId": "1"
}
  • functionName - name of the tested function
  • functionModule - name of the module of the tested function
  • imports - all modules which need to run function with current arguments
  • syspaths - all syspaths which need to import modules (usually it is a project root)
  • argumentsIds - list of argument's ids
  • kwargumentsIds - list of keyword argument's ids
  • serializedMemory - serialized memory throw deep_serialization algorithm
  • filepath - path to the tested function's containing file
  • coverageId - special id witch will be used for sending information about covered lines

Response format:

If execution is successful:

{
        "status": "success",
        "isException": false,
        "statements": [1, 2, 3],
        "missedStatements": [4, 5],
        "stateInit": "string",
        "stateBefore": "string",
        "stateAfter": "string",
        "diffIds": ["3", "4"],
        "argsIds": ["1", "2", "3"],
        "kwargs": ["4", "5", "6"],
        "resultId": "7"
}
  • status - always "success"
  • isException - boolean value, if it is true, execution ended with an exception
  • statements - list of the numbers of covered rows
  • missedStatements - list of numbers of uncovered rows
  • stateInit - serialized states from request
  • stateBefore - serialized states of arguments before execution
  • stateAfter - serialized states of arguments after execution
  • diffIds - ids of the objects which have been changed
  • argsIds - ids of the function's arguments
  • kwargsIds - ids of the function's keyword arguments
  • resultId - id of the returned value

or error format if there was exception in running algorith:

{
        "status": "fail",
        "exception": "stacktrace"
}
  • status - always "fail"
  • exception - string representation of the exception stack trace

Submodule deep_serialization

JSON serializer and deserializer for python objects

States memory json-format

{
  "objects": {
    "id": {
      "id": "1",
      "strategy": "strategy name",
      "typeinfo": {
        "module": "builtins",
        "kind": "int"
      },
      "comparable": true,
      
      // iff strategy is 'repr'
      "value": "1",

      // iff strategy is 'list' or 'dict'
      "items": ["3", "2"],

      // iff strategy = 'reduce'
      "constructor": "mymod.A.__new__",
      "args": ["mymod.A"],
      "state": {"a": "4", "b": "5"},
      "listitems": ["7", "8"],
      "dictitems": {"ka": "10"}
    }
  }
}

Source

GitHub repository

About

Util for python code execution and state serialization.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages