Beispiel #1
0
    def test_decision_criteria(self):
        with open("domains/sample_domains.geojson") as gj:
            polygons = load_domain_polygons(gj.read())
        with open("topologies/topology_independent.json", "r") as idp:
            distribute_nodes_meshviewer_json(idp.read(), True)
            idp.close()

        get_node_domain("c04a00dd692a",
                        lat=49.795449888,
                        lon=8.754730225,
                        accuracy=10000,
                        polygons=polygons,
                        default_domain="default")
        get_node_domain("60e3272f92b2",
                        lat=49.842410779,
                        lon=8.750610352,
                        accuracy=10,
                        polygons=polygons,
                        default_domain="default",
                        max_accuracy=250)
        get_node_domain("daff61000402",
                        polygons=polygons,
                        default_domain="default")

        self.assertEqual(
            Node.get(node_id="c04a00dd692a").mesh_id.decision_criteria,
            int(DecisionCriteria.USER_LOCATION))
        self.assertEqual(
            Node.get(node_id="60e3272f92b2").mesh_id.decision_criteria,
            int(DecisionCriteria.APPROX_LOCATION))
        self.assertEqual(
            Node.get(node_id="daff61000402").mesh_id.decision_criteria, None)
Beispiel #2
0
    def test_domains(self):
        with open("domains/sample_domains.geojson", "r") as f:
            polygons = load_domain_polygons(f.read())

        self.assertEqual(get_domain(49.843996, 8.700313, polygons), "domain1")
        self.assertEqual(get_domain(49.859322, 8.754904, polygons), "domain2")
        self.assertEqual(get_domain(49.797885, 8.754848, polygons), "domain3")
        self.assertEqual(get_domain(49.791845, 8.693972, polygons), None)
Beispiel #3
0
 def test_domain_query_no_approx_location(self):
     with open("domains/sample_domains.geojson") as gj:
         polygons = load_domain_polygons(gj.read())
     with open("topologies/topology_independent.json", "r") as idp:
         distribute_nodes_meshviewer_json(idp.read(), True)
         idp.close()
     dom0, decision_criteria = get_node_domain("c04a00dd692a",
                                               polygons=polygons)
     self.assertEqual(dom0, "domain1")
Beispiel #4
0
def create_app(config, testing=False):
    tmpl_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates')
    app = Flask('domain-director', template_folder=tmpl_dir)
    app.testing = testing

    app.config.update(dict(
        GEOJSON_FILE="geojson.json",
        MLS_API_KEY="test",
        DOMAIN_SWITCH_TIME=1600000000,
        DEFAULT_DOMAIN="default",
        SQLITE_PATH=":memory:",
        UPDATE_INTERVAL=-1,
        ONLY_MIGRATE_VPN=False,
    ))
    app.config.update(config or {})
    app.config.from_envvar('DOMAIN_DIRECTOR_SETTINGS', silent=True)

    with open(app.config["GEOJSON_FILE"], "r") as f:
        app.domain_polygons = load_domain_polygons(f.read())

    setup_database(app)
    register_blueprints(app)

    def update_nodes():
        distribute_nodes_remote_meshviewer(app.config["MESHVIEWER_JSON_URL"], False)

    if app.config["UPDATE_INTERVAL"] > 0:
        scheduler = BackgroundScheduler()
        scheduler.start()
        scheduler.add_job(
            func=update_nodes,
            trigger=IntervalTrigger(seconds=app.config["UPDATE_INTERVAL"]),
            id='update_meshviewer_job',
            name='Update nodes from meshviewer instance',
            replace_existing=True)
        atexit.register(lambda: scheduler.shutdown())

    return app
Beispiel #5
0
    def test_topology_update_bridging(self):
        # Test correct handling of topology update when bridging is not active
        with open("domains/sample_domains.geojson") as gj:
            polygons = load_domain_polygons(gj.read())
        with open("topologies/topology_independent.json", "r") as idp:
            distribute_nodes_meshviewer_json(idp.read(), True)
            idp.close()

        dom3 = get_node_domain("daff61000302",
                               lat=49.795449888,
                               lon=8.754730225,
                               accuracy=10,
                               polygons=polygons,
                               default_domain="default")  # Domain 3
        dom2 = get_node_domain("daff61000402",
                               lat=49.842410779,
                               lon=8.750610352,
                               accuracy=10,
                               polygons=polygons,
                               default_domain="default")  # Domain 2
        dom1 = get_node_domain("c04a00dd692a",
                               lat=49.840639497,
                               lon=8.692588806,
                               accuracy=10,
                               polygons=polygons,
                               default_domain="default")  # Domain 1
        domd = get_node_domain("60e3272f92b2",
                               lat=49.803427592,
                               lon=8.670616150,
                               accuracy=10,
                               polygons=polygons,
                               default_domain="default")  # Default

        self.assertNotEqual(dom3, dom2)
        self.assertNotEqual(dom2, dom1)
        self.assertNotEqual(dom1, domd)
        with open("topologies/topology_fullmesh.json", "r") as idp:
            distribute_nodes_meshviewer_json(idp.read(), True)
            idp.close()

        dom3 = get_node_domain("daff61000302",
                               lat=49.795449888,
                               lon=8.754730225,
                               accuracy=10,
                               polygons=polygons,
                               default_domain="default")  # Domain 3
        dom2 = get_node_domain("daff61000402",
                               lat=49.842410779,
                               lon=8.750610352,
                               accuracy=10,
                               polygons=polygons,
                               default_domain="default")  # Domain 2
        dom1 = get_node_domain("c04a00dd692a",
                               lat=49.840639497,
                               lon=8.692588806,
                               accuracy=10,
                               polygons=polygons,
                               default_domain="default")  # Domain 1
        domd = get_node_domain("60e3272f92b2",
                               lat=49.803427592,
                               lon=8.670616150,
                               accuracy=10,
                               polygons=polygons,
                               default_domain="default")  # Default

        self.assertEqual(dom3, dom2)
        self.assertEqual(dom2, dom1)
        self.assertNotEqual(dom2, domd)
Beispiel #6
0
 def test_get_domain_treshold_distance(self):
     with open("domains/sample_domains.geojson") as gj:
         polygons = load_domain_polygons(gj.read())
     self.assertEqual(get_domain(49.81112, 8.70434, polygons, 1.5), None)
     self.assertEqual(get_domain(49.81112, 8.70434, polygons, 1.6),
                      "domain3")