예제 #1
0
def test_new_nodenet(test_nodenet, resourcepath, engine):
    success, nodenet_uid = micropsi.new_nodenet("Test_Nodenet",
                                                engine=engine,
                                                worldadapter="Default",
                                                owner="tester")
    assert success
    assert nodenet_uid != test_nodenet
    assert micropsi.get_available_nodenets(
        "tester")[nodenet_uid].name == "Test_Nodenet"
    n_path = os.path.join(resourcepath, runtime.NODENET_DIRECTORY,
                          nodenet_uid + ".json")
    assert os.path.exists(n_path)

    # get_available_nodenets
    nodenets = micropsi.get_available_nodenets()
    mynets = micropsi.get_available_nodenets("tester")
    assert test_nodenet in nodenets
    assert nodenet_uid in nodenets
    assert nodenet_uid in mynets
    assert test_nodenet not in mynets

    # delete_nodenet
    micropsi.delete_nodenet(nodenet_uid)
    assert nodenet_uid not in micropsi.get_available_nodenets()
    assert not os.path.exists(n_path)
예제 #2
0
def test_unregister_logger():
    res, uid1 = micropsi.new_nodenet("test1")
    logging.getLogger("agent.%s" % uid1).warning('hello!')
    micropsi.delete_nodenet(uid1)
    assert "agent.%s" % uid1 not in micropsi.logger.loggers
    assert "agent.%s" % uid1 not in micropsi.logger.record_storage
    assert "agent.%s" % uid1 not in micropsi.logger.handlers
예제 #3
0
파일: conftest.py 프로젝트: Doik/micropsi2
def pytest_runtest_setup(item):
    engine_marker = item.get_marker("engine")
    if engine_marker is not None:
        engines = engine_marker.args
        engine_marker = engine_marker.args[0]
        if item.callspec.params['engine'] not in engines:
            pytest.skip("test requires engine %s" % engine_marker)
    for uid in list(micropsi_runtime.nodenets.keys()):
        micropsi_runtime.stop_nodenetrunner(uid)
    for uid in list(micropsi_runtime.nodenets.keys()):
        micropsi_runtime.delete_nodenet(uid)
    for uid in list(micropsi_runtime.worlds.keys()):
        micropsi_runtime.delete_world(uid)

    for item in os.listdir(testpath):
        path = os.path.join(testpath, item)
        if os.path.isdir(path):
            shutil.rmtree(path)
        else:
            os.remove(path)

    open(os.path.join(testpath, '__init__.py'), 'w').close()
    os.mkdir(os.path.join(testpath, 'worlds'))
    os.mkdir(os.path.join(testpath, 'nodenets'))
    os.mkdir(os.path.join(testpath, 'nodenets', '__autosave__'))
    os.mkdir(os.path.join(testpath, 'nodetypes'))
    os.mkdir(os.path.join(testpath, 'recipes'))
    os.mkdir(os.path.join(testpath, 'operations'))
    os.mkdir(os.path.join(testpath, 'nodetypes', 'Test'))
    open(os.path.join(testpath, 'nodetypes', 'Test', '__init__.py'), 'w').close()
    micropsi_runtime.reload_code()
    micropsi_runtime.logger.clear_logs()
    micropsi_runtime.set_runner_properties(0, True)
    set_logging_levels()
예제 #4
0
def delete_nodenet_from_console(nodenet_uid):
    user_id, permissions, token = get_request_data()
    if "manage nodenets" in permissions:
        runtime.delete_nodenet(nodenet_uid)
        response.set_cookie('notification', '{"msg":"Nodenet deleted", "status":"success"}', path='/')
        redirect('/nodenet_mgt')
    return template("error", msg="Insufficient rights to access nodenet console")
예제 #5
0
def test_unregister_logger():
    res, uid1 = micropsi.new_nodenet("test1")
    logging.getLogger("agent.%s" % uid1).warning('hello!')
    micropsi.delete_nodenet(uid1)
    assert "agent.%s" % uid1 not in micropsi.logger.loggers
    assert "agent.%s" % uid1 not in micropsi.logger.record_storage
    assert "agent.%s" % uid1 not in micropsi.logger.handlers
예제 #6
0
def fixed_nodenet(request, test_world, engine):
    """
    A test nodenet filled with some example data (nodenet_data.py)
    Structure:

          ->  A1 ->  A2
        /
       S                     ACTA
        \
          ->  B1 ->  B2

    S: Sensor, brightness_l
    A1: Pipe
    A2: Pipe
    B1: Pipe
    B2: Pipe
    ACTA: Activator, por
    """
    from micropsi_core.tests.nodenet_data import fixed_nodenet_data
    if engine == "theano_engine":
        fixed_nodenet_data = fixed_nodenet_data.replace('Root', 's0001')
    success, uid = micropsi.new_nodenet("Fixednet",
                                        engine=engine,
                                        worldadapter="Braitenberg",
                                        owner="Pytest User",
                                        world_uid=test_world,
                                        uid='fixed_test_nodenet')
    micropsi.get_nodenet(uid)
    micropsi.merge_nodenet(uid, fixed_nodenet_data, keep_uids=True)
    micropsi.save_nodenet(uid)
    yield uid
    try:
        micropsi.delete_nodenet(uid)
    except:
        pass
예제 #7
0
def fixed_nodenet(request, test_world, engine):
    """
    A test nodenet filled with some example data (nodenet_data.py)
    Structure:

          ->  A1 ->  A2
        /
       S                     ACTA
        \
          ->  B1 ->  B2

    S: Sensor, brightness_l
    A1: Pipe
    A2: Pipe
    B1: Pipe
    B2: Pipe
    ACTA: Activator, por
    """
    from micropsi_core.tests.nodenet_data import fixed_nodenet_data
    if engine == "theano_engine":
        fixed_nodenet_data = fixed_nodenet_data.replace('Root', 's0001')
    success, uid = micropsi.new_nodenet("Fixednet", engine=engine, worldadapter="Braitenberg", owner="Pytest User", world_uid=test_world, uid='fixed_test_nodenet')
    micropsi.get_nodenet(uid)
    micropsi.merge_nodenet(uid, fixed_nodenet_data, keep_uids=True)
    micropsi.save_nodenet(uid)
    yield uid
    try:
        micropsi.delete_nodenet(uid)
    except:
        pass
예제 #8
0
def test_nodenet(request, test_world, engine):
    """
    Fixture: A completely empty nodenet without a worldadapter
    """
    global nn_uid
    success, nn_uid = micropsi.new_nodenet("Testnet", engine=engine, owner="Pytest User", uid='Testnet')
    micropsi.save_nodenet(nn_uid)
    yield nn_uid
    try:
        micropsi.delete_nodenet(nn_uid)
    except:
        pass
예제 #9
0
파일: conftest.py 프로젝트: Doik/micropsi2
def default_nodenet(request):
    """
    A nodenet with the default engine
    Use this for tests that are engine-agnostic
    """
    success, nn_uid = micropsi_runtime.new_nodenet("Defaultnet", owner="Pytest User")
    micropsi_runtime.save_nodenet(nn_uid)
    yield nn_uid
    try:
        micropsi_runtime.delete_nodenet(nn_uid)
    except:
        pass
예제 #10
0
파일: conftest.py 프로젝트: Doik/micropsi2
def test_nodenet(request, default_world, engine):
    """
    An empty nodenet, with the currently tested engine.
    Use this for tests that should run in both engines
    """
    global nn_uid
    success, nn_uid = micropsi_runtime.new_nodenet("Testnet", engine=engine, owner="Pytest User")
    micropsi_runtime.save_nodenet(nn_uid)
    yield nn_uid
    try:
        micropsi_runtime.delete_nodenet(nn_uid)
    except:
        pass
예제 #11
0
def pytest_runtest_teardown(item, nextitem):
    if nextitem is None:
        print("DELETING ALL STUFF")
        shutil.rmtree(config['paths']['resource_path'])
    else:
        uids = list(micropsi.nodenets.keys())
        for uid in uids:
            micropsi.delete_nodenet(uid)
        if os.path.isfile(nodetype_file):
            os.remove(nodetype_file)
        if os.path.isfile(nodefunc_file):
            os.remove(nodefunc_file)
        if os.path.isfile(recipes_file):
            os.remove(recipes_file)
        micropsi.reload_native_modules()
        set_logging_levels()
예제 #12
0
def pytest_runtest_teardown(item, nextitem):
    if nextitem is None:
        print("DELETING ALL STUFF")
        shutil.rmtree(config['paths']['resource_path'])
    else:
        uids = list(micropsi.nodenets.keys())
        for uid in uids:
            micropsi.delete_nodenet(uid)
        if os.path.isfile(nodetype_file):
            os.remove(nodetype_file)
        if os.path.isfile(nodefunc_file):
            os.remove(nodefunc_file)
        if os.path.isfile(recipes_file):
            os.remove(recipes_file)
        micropsi.reload_native_modules()
        set_logging_levels()
예제 #13
0
def test_save_nodenet(test_nodenet):
    prepare_nodenet(test_nodenet)
    # save_nodenet
    micropsi.save_nodenet(test_nodenet)
    # unload_nodenet
    micropsi.unload_nodenet(test_nodenet)
    try:
        micropsi.get_nodenet_data(test_nodenet, None)
        assert False, "could fetch a Nodespace that should not have been in memory"
    except:
        pass
    # load_nodenet
    micropsi.load_nodenet(test_nodenet)
    nodespace = micropsi.get_nodenet_data(test_nodenet, None)
    assert len(nodespace["nodes"]) == 4
    micropsi.delete_nodenet(test_nodenet)
def test_new_nodenet(test_nodenet, resourcepath, engine):
    success, nodenet_uid = micropsi.new_nodenet("Test_Nodenet", engine=engine, worldadapter="Default", owner="tester")
    assert success
    assert nodenet_uid != test_nodenet
    assert micropsi.get_available_nodenets("tester")[nodenet_uid].name == "Test_Nodenet"
    n_path = os.path.join(resourcepath, runtime.NODENET_DIRECTORY, nodenet_uid + ".json")
    assert os.path.exists(n_path)

    # get_available_nodenets
    nodenets = micropsi.get_available_nodenets()
    mynets = micropsi.get_available_nodenets("tester")
    assert test_nodenet in nodenets
    assert nodenet_uid in nodenets
    assert nodenet_uid in mynets
    assert test_nodenet not in mynets

    # delete_nodenet
    micropsi.delete_nodenet(nodenet_uid)
    assert nodenet_uid not in micropsi.get_available_nodenets()
    assert not os.path.exists(n_path)
def test_copy_nodes():
    success, nodenet_uid1 = micropsi.new_nodenet("Origin_Nodenet", "Default", owner="tester")
    success, nodenet_uid2 = micropsi.new_nodenet("Target_Nodenet", "Default", owner="tester")

    # create a few nodes
    assert nodenet_uid1 not in micropsi.nodenets
    micropsi.load_nodenet(nodenet_uid1)
    assert nodenet_uid1 in micropsi.nodenets
    micropsi.load_nodenet(nodenet_uid2)
    assert nodenet_uid1 in micropsi.nodenets
    assert nodenet_uid2 in micropsi.nodenets

    micropsi.add_node(nodenet_uid1, "Nodespace", (100, 150), "Root", uid="ns1")
    micropsi.add_node(nodenet_uid1, "Nodespace", (200, 150), "Root", uid="confl")
    micropsi.add_node(nodenet_uid1, "Nodespace", (400, 150), "Root", uid="ns2")
    micropsi.add_node(nodenet_uid2, "Nodespace", (200, 150), "Root", uid="confl")

    micropsi.add_node(nodenet_uid1, "Register", (300, 140), "Root", uid="n1")
    micropsi.add_node(nodenet_uid1, "Register", (300, 240), "Root", uid="n2")
    micropsi.add_node(nodenet_uid1, "Register", (300, 340), "Root", uid="associated_node")
    micropsi.add_node(nodenet_uid1, "Register", (400, 240), "ns1", uid="n3")
    micropsi.add_node(nodenet_uid1, "Register", (400, 240), "ns2", uid="n4")
    micropsi.add_node(nodenet_uid1, "Register", (100, 240), "confl", uid="n5")
    micropsi.add_node(nodenet_uid2, "Register", (100, 140), "Root", uid="n1")
    micropsi.add_node(nodenet_uid2, "Register", (150, 240), "Root", uid="nt2")

    micropsi.add_link(nodenet_uid1, "n1", "gen", "n2", "gen", uid="l1")
    micropsi.add_link(nodenet_uid1, "n2", "gen", "n3", "gen", uid="l2")
    micropsi.add_link(nodenet_uid1, "n1", "gen", "associated_node", "gen", uid="la")
    micropsi.add_link(nodenet_uid1, "n3", "gen", "n1", "gen", uid="l3")
    micropsi.add_link(nodenet_uid1, "n4", "gen", "n1", "gen", uid="l4")
    micropsi.add_link(nodenet_uid2, "n1", "gen", "nt2", "gen", uid="l1")

    # now copy stuff between nodespaces
    micropsi.copy_nodes( ["n1", "n2", "n3", "n5", "ns1", "confl"], nodenet_uid1, nodenet_uid2)

    micropsi.save_nodenet(nodenet_uid1)
    micropsi.save_nodenet(nodenet_uid2)

    target = micropsi.get_nodespace(nodenet_uid2, "Root", -1)
    assert len(target["nodes"]) == 4 + 2
    assert len(target["nodespaces"]) == 2 + 2

    assert "n1" in target["nodes"]
    assert "n2" in target["nodes"]
    assert "n3" in target["nodes"]
    assert "associated_node" not in target["nodes"]
    assert "n4" not in target["nodes"]
    assert "n5" in target["nodes"]
    assert "nt2" in target["nodes"]

    assert "ns1" in target["nodespaces"]
    assert "ns2" not in target["nodespaces"]
    assert "confl" in target["nodespaces"]

    assert len(target["links"]) == 3 + 1
    assert "l1" in target["links"]
    assert "l2" in target["links"]
    assert "l3" in target["links"]
    assert "l4" not in target["links"]

    # we should also test for parentage and link connectivity


    # TODO now test copying within the same nodenet

    micropsi.copy_nodes( ["n1", "n2", "n3", "n5", "ns1", "confl"], nodenet_uid1, nodenet_uid1, target_nodespace_uid="ns2" )
    micropsi.save_nodenet(nodenet_uid1)
    # delete_nodenets
    micropsi.delete_nodenet(nodenet_uid1)
    micropsi.delete_nodenet(nodenet_uid2)
예제 #16
0
def delete_nodenet(nodenet_uid):
    return runtime.delete_nodenet(nodenet_uid)
예제 #17
0
def delete_nodenet(nodenet_uid):
    """ Delete the given nodenet """
    return runtime.delete_nodenet(nodenet_uid)
예제 #18
0
 def fin():
     if DELETE_TEST_FILES_ON_EXIT:
         micropsi.delete_nodenet(uid)
예제 #19
0
 def fin():
     if DELETE_TEST_FILES_ON_EXIT:
         try:
             micropsi.delete_nodenet(uid)
         except:
             pass