GithubHelp home page GithubHelp logo

Comments (11)

iakkus avatar iakkus commented on June 11, 2024

Can yo try with python 3.6+?

from knix.

lei-houjyu avatar lei-houjyu commented on June 11, 2024

Can yo try with python 3.6+?

I have upgrade my python3 from 3.5.2 to 3.6.10 but using python 3.6 seems to lead new issues as follows. Are there other things need to be corrected? Thanks!

$ python3 --version
Python 3.6.10
$ make helloworld
cd helloworld; PYTHONPATH=../../mfn_sdk python3 -m unittest discover -v
test_helloworld (test.HelloWorldTest) ... ERROR
test_helloworld_asl (test.HelloWorldTest)
creates and executes the hello world workflow from an ASL description ... ERROR
test_helloworld_wfd (test.HelloWorldTest)
creates and executes the hello world workflow from a SAND workflow description ... ERROR

======================================================================
ERROR: test_helloworld (test.HelloWorldTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/howie/knix/tests/helloworld/test.py", line 55, in test_helloworld
    test = MFNTest(test_name="HelloWorld")
  File "../mfn_test_utils.py", line 47, in __init__
    self._settings = self._get_settings()
  File "../mfn_test_utils.py", line 107, in _get_settings
    settings.update(self._get_json_file("../settings.json"))
  File "../mfn_test_utils.py", line 101, in _get_json_file
    json_data = json.load(json_file)
  File "/usr/lib/python3.6/json/__init__.py", line 299, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "/usr/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.6/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 11 column 17 (char 265)

======================================================================
ERROR: test_helloworld_asl (test.HelloWorldTest)
creates and executes the hello world workflow from an ASL description
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/howie/knix/tests/helloworld/test.py", line 38, in test_helloworld_asl
    test = MFNTest(test_name="Hello World ASL", workflow_filename="helloworld-asl.json")
  File "../mfn_test_utils.py", line 47, in __init__
    self._settings = self._get_settings()
  File "../mfn_test_utils.py", line 107, in _get_settings
    settings.update(self._get_json_file("../settings.json"))
  File "../mfn_test_utils.py", line 101, in _get_json_file
    json_data = json.load(json_file)
  File "/usr/lib/python3.6/json/__init__.py", line 299, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "/usr/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.6/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 11 column 17 (char 265)

======================================================================
ERROR: test_helloworld_wfd (test.HelloWorldTest)
creates and executes the hello world workflow from a SAND workflow description
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/howie/knix/tests/helloworld/test.py", line 47, in test_helloworld_wfd
    test = MFNTest(test_name="Hello World MFn", workflow_filename="helloworld-wfd.json")
  File "../mfn_test_utils.py", line 47, in __init__
    self._settings = self._get_settings()
  File "../mfn_test_utils.py", line 107, in _get_settings
    settings.update(self._get_json_file("../settings.json"))
  File "../mfn_test_utils.py", line 101, in _get_json_file
    json_data = json.load(json_file)
  File "/usr/lib/python3.6/json/__init__.py", line 299, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "/usr/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.6/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 11 column 17 (char 265)

----------------------------------------------------------------------
Ran 3 tests in 0.001s

FAILED (errors=3)
make: *** [helloworld] Error 1

from knix.

iakkus avatar iakkus commented on June 11, 2024

Can you double check the file tests/settings.json?

It should be a valid JSON and with the correct url and proxy settings. For the username, it will be automatically created the first time you run the tests.

from knix.

iakkus avatar iakkus commented on June 11, 2024

Please also join the KNIX Slack workspace. You can find the invitation towards the end of the README file.

from knix.

lei-houjyu avatar lei-houjyu commented on June 11, 2024

Can you double check the file tests/settings.json?

It should be a valid JSON and with the correct url and proxy settings. For the username, it will be automatically created the first time you run the tests.

'tests/settings.json' seems not a valid JSON file. Its contents are as follows.

$ cat settings.env
MFN_URL=https://<hostname>
MFN_USER=<email>
MFN_PASSWORD=<pass>
MFN_USERNAME=<name>
HTTP_PROXY=http://<proxyhost>:<proxyport>
HTTPS_PROXY=http://<proxyhost>:<proxyport>
$ cat settings.json
{
    "mfn_url": "<http://host:port>",
    "mfn_user": "<email>",
    "mfn_password": "<password>",
    "mfn_name": "<full name>",
    "proxies":
    {
        "http": "http://<proxyhost>:<port>",
        "https": "http://<proxyhost>:<port>"
    },
    "timeout":  <seconds>
}

How should I fill this file? I don't have a mfn account right now. Should I apply for a new account?

I tried to write the url and a random username in 'settings.json' but got new errors in the follow.

$ cat settings.json
{
    "mfn_url": "http://lhy-ubuntu.ipads-lab.se.sjtu.edu.cn",
    "mfn_user": "Haoyu Li",
    "mfn_password": "123456",
    "mfn_name": "Haoyu Li",
    "timeout": 10
}
$ make helloworld
cd helloworld; PYTHONPATH=../../mfn_sdk python3 -m unittest discover -v
test_helloworld (test.HelloWorldTest) ... User: Haoyu Li
Workflow folder: ./
ERROR
/usr/lib/python3.6/unittest/case.py:633: ResourceWarning: unclosed <socket.socket fd=3, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.10.91', 57644), raddr=('192.16
8.10.91', 80)>
  outcome.errors.clear()
/usr/lib/python3.6/unittest/case.py:633: ResourceWarning: unclosed <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.10.91', 34762), raddr=('192.16
8.10.91', 8080)>
  outcome.errors.clear()
test_helloworld_asl (test.HelloWorldTest)
creates and executes the hello world workflow from an ASL description ... User: Haoyu Li
Workflow folder: ./
ERROR
/usr/lib/python3.6/unittest/case.py:633: ResourceWarning: unclosed <socket.socket fd=3, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.10.91', 57670), raddr=('192.16
8.10.91', 80)>
  outcome.errors.clear()
/usr/lib/python3.6/unittest/case.py:633: ResourceWarning: unclosed <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.10.91', 34788), raddr=('192.16
8.10.91', 8080)>
  outcome.errors.clear()
test_helloworld_wfd (test.HelloWorldTest)
creates and executes the hello world workflow from a SAND workflow description ... User: Haoyu Li
Workflow folder: ./
ERROR
/usr/lib/python3.6/unittest/case.py:633: ResourceWarning: unclosed <socket.socket fd=3, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.10.91', 57696), raddr=('192.16
8.10.91', 80)>
  outcome.errors.clear()
/usr/lib/python3.6/unittest/case.py:633: ResourceWarning: unclosed <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.10.91', 34814), raddr=('192.16
8.10.91', 8080)>
  outcome.errors.clear()

======================================================================
ERROR: test_helloworld (test.HelloWorldTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/howie/knix/tests/helloworld/test.py", line 55, in test_helloworld
    test = MFNTest(test_name="HelloWorld")
File "../mfn_test_utils.py", line 94, in __init__
    self.upload_workflow()
  File "../mfn_test_utils.py", line 268, in upload_workflow
    self.undeploy_workflow()
  File "../mfn_test_utils.py", line 301, in undeploy_workflow
    existing_workflows = self._client.workflows
  File "/home/howie/knix/mfn_sdk/mfn_sdk/mfnclient.py", line 369, in workflows
    data = self.action('getWorkflows')
  File "/home/howie/knix/mfn_sdk/mfn_sdk/mfnclient.py", line 271, in action
    raise Exception(f"MicroFunctions Error for action {action}: {resp['data']['message']}")
Exception: MicroFunctions Error for action getWorkflows: Couldn't retrieve workflows and their status: Couldn't retrieve workflow status; no such workflow.

======================================================================
ERROR: test_helloworld_asl (test.HelloWorldTest)
creates and executes the hello world workflow from an ASL description
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/howie/knix/tests/helloworld/test.py", line 38, in test_helloworld_asl
    test = MFNTest(test_name="Hello World ASL", workflow_filename="helloworld-asl.json")
  File "../mfn_test_utils.py", line 94, in __init__
    self.upload_workflow()
  File "../mfn_test_utils.py", line 268, in upload_workflow
    self.undeploy_workflow()
  File "../mfn_test_utils.py", line 301, in undeploy_workflow
    existing_workflows = self._client.workflows
  File "/home/howie/knix/mfn_sdk/mfn_sdk/mfnclient.py", line 369, in workflows
    data = self.action('getWorkflows')
  File "/home/howie/knix/mfn_sdk/mfn_sdk/mfnclient.py", line 271, in action
    raise Exception(f"MicroFunctions Error for action {action}: {resp['data']['message']}")
Exception: MicroFunctions Error for action getWorkflows: Couldn't retrieve workflows and their status: Couldn't retrieve workflow status; no such workflow.

======================================================================
ERROR: test_helloworld_wfd (test.HelloWorldTest)
creates and executes the hello world workflow from a SAND workflow description
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/howie/knix/tests/helloworld/test.py", line 47, in test_helloworld_wfd
    test = MFNTest(test_name="Hello World MFn", workflow_filename="helloworld-wfd.json")
  File "../mfn_test_utils.py", line 94, in __init__
    self.upload_workflow()
  File "../mfn_test_utils.py", line 268, in upload_workflow
    self.undeploy_workflow()
  File "../mfn_test_utils.py", line 301, in undeploy_workflow
existing_workflows = self._client.workflows
  File "/home/howie/knix/mfn_sdk/mfn_sdk/mfnclient.py", line 369, in workflows
    data = self.action('getWorkflows')
  File "/home/howie/knix/mfn_sdk/mfn_sdk/mfnclient.py", line 271, in action
    raise Exception(f"MicroFunctions Error for action {action}: {resp['data']['message']}")
Exception: MicroFunctions Error for action getWorkflows: Couldn't retrieve workflows and their status: Couldn't retrieve workflow status; no such workflow.

----------------------------------------------------------------------
Ran 3 tests in 0.106s

FAILED (errors=3)
make: *** [helloworld] Error 1

from knix.

iakkus avatar iakkus commented on June 11, 2024

This is your own installation, so no need to apply for an account.

Can you supply a user <mfn_user> with an email address rather than a string with a spaces (i.e., "mfn_user": "Haoyu Li", -> "mfn_user": "user@domain")?

I am trying to reproduce the issue.

from knix.

lei-houjyu avatar lei-houjyu commented on June 11, 2024

I've also tried only filling the 'mfn_url' and 'timeout' fields. Errors in this case are as follows.

$ cat settings.json
{
    "mfn_url": "http://lhy-ubuntu.ipads-lab.se.sjtu.edu.cn",
    "mfn_user": "<email>",
    "mfn_password": "<password>",
    "mfn_name": "<full name>",
    "proxies":
    {
        "http": "http://<proxyhost>:<port>",
        "https": "http://<proxyhost>:<port>"
    },
    "timeout":  10
}
$ make helloworld
cd helloworld; PYTHONPATH=../../mfn_sdk python3 -m unittest discover -v
test_helloworld (test.HelloWorldTest) ... User: <email>
ERROR
test_helloworld_asl (test.HelloWorldTest)
creates and executes the hello world workflow from an ASL description ... User: <email>
ERROR
test_helloworld_wfd (test.HelloWorldTest)
creates and executes the hello world workflow from a SAND workflow description ... User: <email>
ERROR

======================================================================
ERROR: test_helloworld (test.HelloWorldTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/howie/.local/lib/python3.6/site-packages/requests/adapters.py", line 412, in send
    conn = self.get_connection(request.url, proxies)
  File "/home/howie/.local/lib/python3.6/site-packages/requests/adapters.py", line 305, in get_connection
    proxy_url = parse_url(proxy)
  File "/home/howie/.local/lib/python3.6/site-packages/urllib3/util/url.py", line 392, in parse_url
    return six.raise_from(LocationParseError(source_url), None)
  File "<string>", line 3, in raise_from
urllib3.exceptions.LocationParseError: Failed to parse: http://<proxyhost>:<port>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/howie/knix/tests/helloworld/test.py", line 55, in test_helloworld
    test = MFNTest(test_name="HelloWorld")
  File "../mfn_test_utils.py", line 57, in __init__
    self._client = MfnClient()
  File "/home/howie/knix/mfn_sdk/mfn_sdk/mfnclient.py", line 158, in __init__
    epr = self._s.get(self.weburl+"/app/endpoint.js")
  File "/home/howie/.local/lib/python3.6/site-packages/requests/sessions.py", line 543, in get
    return self.request('GET', url, **kwargs)
  File "/home/howie/.local/lib/python3.6/site-packages/requests/sessions.py", line 530, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/howie/.local/lib/python3.6/site-packages/requests/sessions.py", line 643, in send
    r = adapter.send(request, **kwargs)
  File "/home/howie/.local/lib/python3.6/site-packages/requests/adapters.py", line 414, in send
    raise InvalidURL(e, request=request)
requests.exceptions.InvalidURL: Failed to parse: http://<proxyhost>:<port>

======================================================================
ERROR: test_helloworld_asl (test.HelloWorldTest)
creates and executes the hello world workflow from an ASL description
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/howie/.local/lib/python3.6/site-packages/requests/adapters.py", line 412, in send
    conn = self.get_connection(request.url, proxies)
  File "/home/howie/.local/lib/python3.6/site-packages/requests/adapters.py", line 305, in get_connection
    proxy_url = parse_url(proxy)
  File "/home/howie/.local/lib/python3.6/site-packages/urllib3/util/url.py", line 392, in parse_url
    return six.raise_from(LocationParseError(source_url), None)
  File "<string>", line 3, in raise_from
urllib3.exceptions.LocationParseError: Failed to parse: http://<proxyhost>:<port>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/howie/knix/tests/helloworld/test.py", line 38, in test_helloworld_asl
    test = MFNTest(test_name="Hello World ASL", workflow_filename="helloworld-asl.json")
  File "../mfn_test_utils.py", line 57, in __init__
    self._client = MfnClient()
  File "/home/howie/knix/mfn_sdk/mfn_sdk/mfnclient.py", line 158, in __init__
    epr = self._s.get(self.weburl+"/app/endpoint.js")
  File "/home/howie/.local/lib/python3.6/site-packages/requests/sessions.py", line 543, in get
    return self.request('GET', url, **kwargs)
  File "/home/howie/.local/lib/python3.6/site-packages/requests/sessions.py", line 530, in request
    resp = self.send(prep, **send_kwargs)
 File "/home/howie/.local/lib/python3.6/site-packages/requests/sessions.py", line 643, in send
    r = adapter.send(request, **kwargs)
  File "/home/howie/.local/lib/python3.6/site-packages/requests/adapters.py", line 414, in send
    raise InvalidURL(e, request=request)
requests.exceptions.InvalidURL: Failed to parse: http://<proxyhost>:<port>

======================================================================
ERROR: test_helloworld_wfd (test.HelloWorldTest)
creates and executes the hello world workflow from a SAND workflow description
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/howie/.local/lib/python3.6/site-packages/requests/adapters.py", line 412, in send
    conn = self.get_connection(request.url, proxies)
  File "/home/howie/.local/lib/python3.6/site-packages/requests/adapters.py", line 305, in get_connection
    proxy_url = parse_url(proxy)
  File "/home/howie/.local/lib/python3.6/site-packages/urllib3/util/url.py", line 392, in parse_url
    return six.raise_from(LocationParseError(source_url), None)
  File "<string>", line 3, in raise_from
urllib3.exceptions.LocationParseError: Failed to parse: http://<proxyhost>:<port>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/howie/knix/tests/helloworld/test.py", line 47, in test_helloworld_wfd
    test = MFNTest(test_name="Hello World MFn", workflow_filename="helloworld-wfd.json")
  File "../mfn_test_utils.py", line 57, in __init__
    self._client = MfnClient()
  File "/home/howie/knix/mfn_sdk/mfn_sdk/mfnclient.py", line 158, in __init__
    epr = self._s.get(self.weburl+"/app/endpoint.js")
  File "/home/howie/.local/lib/python3.6/site-packages/requests/sessions.py", line 543, in get
    return self.request('GET', url, **kwargs)
  File "/home/howie/.local/lib/python3.6/site-packages/requests/sessions.py", line 530, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/howie/.local/lib/python3.6/site-packages/requests/sessions.py", line 643, in send
    r = adapter.send(request, **kwargs)
  File "/home/howie/.local/lib/python3.6/site-packages/requests/adapters.py", line 414, in send
    raise InvalidURL(e, request=request)
requests.exceptions.InvalidURL: Failed to parse: http://<proxyhost>:<port>

----------------------------------------------------------------------
Ran 3 tests in 0.004s

FAILED (errors=3)
make: *** [helloworld] Error 1

from knix.

iakkus avatar iakkus commented on June 11, 2024

{
"mfn_url": "http://lhy-ubuntu.ipads-lab.se.sjtu.edu.cn",
"mfn_user": "test@knix",
"mfn_password": "test",
"mfn_name": "Test",
"proxies":
{
},
"timeout": 30
}

Please use the above as your settings file and try again.

On another note, can you access that URL via a web browser?

from knix.

lei-houjyu avatar lei-houjyu commented on June 11, 2024

It seems not working.

$ cat settings.json
{
    "mfn_url": "http://lhy-ubuntu.ipads-lab.se.sjtu.edu.cn",
    "mfn_user": "test@knix",
    "mfn_password": "test",
    "mfn_name": "Test",
    "proxies":
    {
    },
    "timeout":  30
}
$ make helloworld                                                                                                                                                                     [47/1944]
cd helloworld; PYTHONPATH=../../mfn_sdk python3 -m unittest discover -v
test_helloworld (test.HelloWorldTest) ... User: test@knix
Workflow folder: ./
ERROR
/usr/lib/python3.6/unittest/case.py:633: ResourceWarning: unclosed <socket.socket fd=3, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.10.91', 58170), raddr=('192.16
8.10.91', 80)>
  outcome.errors.clear()
/usr/lib/python3.6/unittest/case.py:633: ResourceWarning: unclosed <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.10.91', 35288), raddr=('192.16
8.10.91', 8080)>
  outcome.errors.clear()
test_helloworld_asl (test.HelloWorldTest)
creates and executes the hello world workflow from an ASL description ... User: test@knix
Workflow folder: ./
ERROR
/usr/lib/python3.6/unittest/case.py:633: ResourceWarning: unclosed <socket.socket fd=3, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.10.91', 58210), raddr=('192.16
8.10.91', 80)>
  outcome.errors.clear()
/usr/lib/python3.6/unittest/case.py:633: ResourceWarning: unclosed <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.10.91', 35328), raddr=('192.16
8.10.91', 8080)>
  outcome.errors.clear()
test_helloworld_wfd (test.HelloWorldTest)
creates and executes the hello world workflow from a SAND workflow description ... User: test@knix
Workflow folder: ./
ERROR
/usr/lib/python3.6/unittest/case.py:633: ResourceWarning: unclosed <socket.socket fd=3, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.10.91', 58248), raddr=('192.16
8.10.91', 80)>
  outcome.errors.clear()
/usr/lib/python3.6/unittest/case.py:633: ResourceWarning: unclosed <socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6, laddr=('192.168.10.91', 35366), raddr=('192.16
8.10.91', 8080)>
  outcome.errors.clear()

======================================================================
ERROR: test_helloworld (test.HelloWorldTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/howie/knix/tests/helloworld/test.py", line 55, in test_helloworld
    test = MFNTest(test_name="HelloWorld")
  File "../mfn_test_utils.py", line 94, in __init__
    self.upload_workflow()
  File "../mfn_test_utils.py", line 268, in upload_workflow
    self.undeploy_workflow()
  File "../mfn_test_utils.py", line 301, in undeploy_workflow
    existing_workflows = self._client.workflows
  File "/home/howie/knix/mfn_sdk/mfn_sdk/mfnclient.py", line 369, in workflows
    data = self.action('getWorkflows')
  File "/home/howie/knix/mfn_sdk/mfn_sdk/mfnclient.py", line 271, in action
raise Exception(f"MicroFunctions Error for action {action}: {resp['data']['message']}")                                                                                                       [0/1944]
Exception: MicroFunctions Error for action getWorkflows: Couldn't retrieve workflows and their status: Couldn't retrieve workflow status; no such workflow.

======================================================================
ERROR: test_helloworld_asl (test.HelloWorldTest)
creates and executes the hello world workflow from an ASL description
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/howie/knix/tests/helloworld/test.py", line 38, in test_helloworld_asl
    test = MFNTest(test_name="Hello World ASL", workflow_filename="helloworld-asl.json")
  File "../mfn_test_utils.py", line 94, in __init__
    self.upload_workflow()
  File "../mfn_test_utils.py", line 268, in upload_workflow
    self.undeploy_workflow()
  File "../mfn_test_utils.py", line 301, in undeploy_workflow
    existing_workflows = self._client.workflows
  File "/home/howie/knix/mfn_sdk/mfn_sdk/mfnclient.py", line 369, in workflows
    data = self.action('getWorkflows')
  File "/home/howie/knix/mfn_sdk/mfn_sdk/mfnclient.py", line 271, in action
    raise Exception(f"MicroFunctions Error for action {action}: {resp['data']['message']}")
Exception: MicroFunctions Error for action getWorkflows: Couldn't retrieve workflows and their status: Couldn't retrieve workflow status; no such workflow.

======================================================================
ERROR: test_helloworld_wfd (test.HelloWorldTest)
creates and executes the hello world workflow from a SAND workflow description
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/howie/knix/tests/helloworld/test.py", line 47, in test_helloworld_wfd
    test = MFNTest(test_name="Hello World MFn", workflow_filename="helloworld-wfd.json")
  File "../mfn_test_utils.py", line 94, in __init__
    self.upload_workflow()
  File "../mfn_test_utils.py", line 268, in upload_workflow
    self.undeploy_workflow()
  File "../mfn_test_utils.py", line 301, in undeploy_workflow
    existing_workflows = self._client.workflows
  File "/home/howie/knix/mfn_sdk/mfn_sdk/mfnclient.py", line 369, in workflows
    data = self.action('getWorkflows')
  File "/home/howie/knix/mfn_sdk/mfn_sdk/mfnclient.py", line 271, in action
    raise Exception(f"MicroFunctions Error for action {action}: {resp['data']['message']}")
Exception: MicroFunctions Error for action getWorkflows: Couldn't retrieve workflows and their status: Couldn't retrieve workflow status; no such workflow.

----------------------------------------------------------------------
Ran 3 tests in 0.185s

FAILED (errors=3)
make: *** [helloworld] Error 1

Because I'm deploying kNIX on a remote server, I cannot open a browser on it. Therefore I used 'wget' to download the web page 'http://lhy-ubuntu.ipads-lab.se.sjtu.edu.cn' and its contents are:

$ wget http://lhy-ubuntu.ipads-lab.se.sjtu.edu.cn
--2020-05-22 14:59:45--  http://lhy-ubuntu.ipads-lab.se.sjtu.edu.cn/
Resolving lhy-ubuntu.ipads-lab.se.sjtu.edu.cn (lhy-ubuntu.ipads-lab.se.sjtu.edu.cn)... 192.168.10.91
Connecting to lhy-ubuntu.ipads-lab.se.sjtu.edu.cn (lhy-ubuntu.ipads-lab.se.sjtu.edu.cn)|192.168.10.91|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8973 (8.8K) [text/html]
Saving to: ‘index.html’

index.html                                         100%[==============================================================================================================>]   8.76K  --.-KB/s    in 0s

2020-05-22 14:59:45 (103 MB/s) - ‘index.html’ saved [8973/8973]
$ cat index.html
<!--
   Copyright 2020 The KNIX Authors

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

<!DOCTYPE html>
<html lang="en" ng-app="MfnWebConsole">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>KNIX MicroFunctions</title>

  <link href='https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900italic,900&subset=latin,greek,greek-ext,vietnamese,cyrillic-ext,latin-ext,cyrillic' rel='stylesheet' type='text/css'>


  <link rel="stylesheet" href="lib/ionicons.css" >
  <link rel="stylesheet" href="lib/angular-toastr.css" >
  <link rel="stylesheet" href="lib/animate.css" >
  <link rel="stylesheet" href="lib/bootstrap.css" >
  <link rel="stylesheet" href="lib/bootstrap-select.css" >
  <link rel="stylesheet" href="lib/bootstrap-switch.css" >
  <link rel="stylesheet" href="lib/bootstrap-tagsinput.css" >
  <link rel="stylesheet" href="lib/font-awesome.css" >
  <link rel="stylesheet" href="lib/leaflet.css" >
  <link rel="stylesheet" href="lib/angular-progress-button-styles.min.css" >
  <link rel="stylesheet" href="lib/ion.rangeSlider.css" >
  <link rel="stylesheet" href="lib/ion.rangeSlider.skinFlat.css" >
  <link rel="stylesheet" href="lib/textAngular.css" >
  <link rel="stylesheet" href="lib/xeditable.css" >
  <link rel="stylesheet" href="lib/style.css" >
  <link rel="stylesheet" href="lib/select.css" >
  <link rel="stylesheet" href="lib/vis.min.css">

  <link rel="stylesheet" href="app/main.css">
</head>
<body>
<div class="body-bg"></div>
<main ng-if="$pageFinishedLoading" ng-class="{ 'menu-collapsed': $baSidebarService.isMenuCollapsed() }">

  <ba-sidebar></ba-sidebar>
  <page-top></page-top>

  <div class="al-main">
    <div class="al-content">
      <content-top></content-top>
      <div ui-view autoscroll="true" autoscroll-body-top></div>
    </div>
  </div>

  <footer class="al-footer clearfix">
    <div class="al-footer-right"></div>
    <div class="al-footer-main clearfix">
      <div class="al-copy"></div>
    </div>
  </footer>

  <back-top></back-top>
</main>

<div id="preloader" ng-show="!$pageFinishedLoading">
  <div></div>
</div>

<script src="lib/jquery.js"></script>
<script src="lib/jquery-ui.js"></script>
<script src="lib/jquery.easing.js"></script>
<script src="lib/angular.js"></script>
<script src="lib/angular-cookies.js"></script>
<script src="lib/angular-route.js"></script>
<script src="lib/jquery.slimscroll.js"></script>
<script src="lib/angular-slimscroll.js"></script>
<script src="lib/smart-table.js"></script>
<script src="lib/angular-toastr.tpls.js"></script>
<script src="lib/angular-touch.js"></script>
<script src="lib/sortable.js"></script>
<script src="lib/dropdown.js"></script>
<script src="lib/bootstrap-select.js"></script>
<script src="lib/bootstrap-switch.js"></script>
<script src="lib/bootstrap-tagsinput.js"></script>
<script src="lib/moment.js"></script>
<script src="lib/angular-progress-button-styles.min.js"></script>
<script src="lib/angular-ui-router.js"></script>
<script src="lib/eve.js"></script>
<script src="lib/raphael.min.js"></script>
<script src="lib/mocha.js"></script>
<script src="lib/ion.rangeSlider.js"></script>
<script src="lib/ui-bootstrap-tpls.js"></script>
<script src="lib/angular-animate.js"></script>
<script src="lib/rangy-core.js"></script>
<script src="lib/rangy-classapplier.js"></script>
<script src="lib/rangy-highlighter.js"></script>
<script src="lib/rangy-selectionsaverestore.js"></script>
<script src="lib/rangy-serializer.js"></script>
<script src="lib/rangy-textrange.js"></script>
<script src="lib/textAngular.js"></script>
<script src="lib/textAngular-sanitize.js"></script>
<script src="lib/textAngularSetup.js"></script>
<script src="lib/xeditable.js"></script>
<script src="lib/select.js"></script>
<script src="lib/clipboard.min.js"></script>
<script src="lib/ngclipboard.min.js"></script>
<script src="lib/jszip.min.js"></script>
<script src="lib/jszip-utils.min.js"></script>
<script src="lib/vis.min.js"></script>
<script src="lib/ajv.min.js"></script>
<script src="lib/showdown.min.js"></script>
<script src="lib/highlight.pack.js"></script>


<script src="app/pages/functions/functions.module.js"></script>
<script src="app/pages/workflows/workflows.module.js"></script>
<script src="app/pages/docs/docs.module.js"></script>
<script src="app/pages/storage/storage.module.js"></script>
<script src="app/pages/pages.module.js"></script>
<script src="app/theme/theme.module.js"></script>
<script src="app/pages/dashboard/dashboard.module.js"></script>
<script src="app/theme/components/components.module.js"></script>
<script src="app/theme/inputs/inputs.module.js"></script>

<script src="app/endpoint.js"></script>
<script src="app/app.js"></script>
<script src="app/theme/theme.config.js"></script>
<script src="app/theme/theme.configProvider.js"></script>
<script src="app/theme/theme.constants.js"></script>
<script src="app/theme/theme.run.js"></script>
<script src="app/theme/theme.service.js"></script>

<script src="app/pages/functions/FunctionTableCtrl.js"></script>
<script src="app/pages/functions/CodeEditorCtrl.js"></script>
<script src="app/pages/workflows/WorkflowEditorCtrl.js"></script>
<script src="app/pages/workflows/ExecutionCtrl.js"></script>
<script src="app/pages/workflows/WorkflowTableCtrl.js"></script>
<script src="app/pages/workflows/WorkflowImportCtrl.js"></script>
<script src="app/pages/storage/StorageTableCtrl.js"></script>
<script src="app/pages/dashboard/DashboardCtrl.js"></script>
<script src="app/pages/storage/UploadObjectCtrl.js"></script>

<script src="app/theme/components/toastrLibConfig.js"></script>
<script src="app/theme/directives/animatedChange.js"></script>
<script src="app/theme/directives/autoExpand.js"></script>
<script src="app/theme/directives/autoFocus.js"></script>
<script src="app/theme/directives/includeWithScope.js"></script>
<script src="app/theme/directives/ionSlider.js"></script>
<script src="app/theme/directives/ngFileSelect.js"></script>
<script src="app/theme/directives/scrollPosition.js"></script>
<script src="app/theme/directives/trackWidth.js"></script>
<script src="app/theme/directives/zoomIn.js"></script>
<script src="app/theme/services/baProgressModal.js"></script>
<script src="app/theme/services/baUtil.js"></script>
<script src="app/theme/services/fileReader.js"></script>
<script src="app/theme/services/preloader.js"></script>

<script src="app/theme/components/backTop/backTop.directive.js"></script>
<script src="app/theme/components/baPanel/baPanel.directive.js"></script>
<script src="app/theme/components/baPanel/baPanel.service.js"></script>
<script src="app/theme/components/baPanel/baPanelBlur.directive.js"></script>
<script src="app/theme/components/baPanel/baPanelBlurHelper.service.js"></script>
<script src="app/theme/components/baPanel/baPanelSelf.directive.js"></script>
<script src="app/theme/components/baSidebar/baSidebar.directive.js"></script>
<script src="app/theme/components/baSidebar/baSidebar.service.js"></script>
<script src="app/theme/components/baSidebar/BaSidebarCtrl.js"></script>
<script src="app/theme/components/baSidebar/baSidebarHelpers.directive.js"></script>
<script src="app/theme/components/baWizard/baWizard.directive.js"></script>
<script src="app/theme/components/baWizard/baWizardCtrl.js"></script>
<script src="app/theme/components/baWizard/baWizardStep.directive.js"></script>
<script src="app/theme/components/contentTop/contentTop.directive.js"></script>
<script src="app/theme/components/msgCenter/msgCenter.directive.js"></script>
<script src="app/theme/components/msgCenter/MsgCenterCtrl.js"></script>
<script src="app/theme/components/pageTop/pageTop.directive.js"></script>
<script src="app/theme/components/progressBarRound/progressBarRound.directive.js"></script>
<script src="app/theme/components/widgets/widgets.directive.js"></script>
<script src="app/theme/inputs/baSwitcher/baSwitcher.js"></script>


<script src="app/theme/components/backTop/lib/jquery.backTop.min.js"></script>

<script src="lib/ace/ace-builds/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
<script src="lib/ace/ace-builds/src-min-noconflict/ext-language_tools.js" type="text/javascript" charset="utf-8"></script>
<script src="lib/ui-ace/ui-ace.js" type="text/javascript" charset="utf-8"></script>

</body>
</html>

from knix.

iakkus avatar iakkus commented on June 11, 2024

I think I now see that there is a bug: for new users, there is no value for "_list_workflows" entry. As a result, getWorkflows in the management service fails and immediately returns, so that the rest of the test case cannot proceed.

Steps to reproduce:

  1. open a test.py in a test case inside tests/
  2. modify the line with MFNTest() to include another parameter: new_user=True
  3. run the test

from knix.

iakkus avatar iakkus commented on June 11, 2024

Merged into develop branch. Will shortly go into another release.

from knix.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.