def test_dependency_with_lowlevel_dependencies_requested(self):
     """ Simulate requesting a Raw Parameter as a dependency. This requires
     the requested node to be removed when it is not at the top of the
     dependency tree.
     """
     requested = ['P7', 'P8', # top level nodes
                  'P4', 'P5', 'P6', # middle level node
                  'Raw3', # bottom level node
                  ]
     mgr = NodeManager({'Start Datetime': datetime.now()}, 10, self.lfl_params + ['Floating'],
                       requested, [], self.derived_nodes, {}, {})
     gr = graph_nodes(mgr)
     gr_all, gr_st, order = process_order(gr, mgr)
     
     self.assertEqual(len(gr_st), 11)
     pos = order.index
     self.assertTrue(pos('P8') > pos('Raw5'))
     self.assertTrue(pos('P7') > pos('P4'))
     self.assertTrue(pos('P7') > pos('P5'))
     self.assertTrue(pos('P7') > pos('P6'))
     self.assertTrue(pos('P6') > pos('Raw3'))
     self.assertTrue(pos('P5') > pos('Raw3'))
     self.assertTrue(pos('P5') > pos('Raw4'))
     self.assertTrue(pos('P4') > pos('Raw1'))
     self.assertTrue(pos('P4') > pos('Raw2'))
     self.assertFalse('Floating' in order)
     self.assertFalse('root' in order) #don't include the root!
    def test_dependency_with_lowlevel_dependencies_requested(self):
        """ Simulate requesting a Raw Parameter as a dependency. This requires
        the requested node to be removed when it is not at the top of the
        dependency tree.
        """
        requested = [
            'P7',
            'P8',  # top level nodes
            'P4',
            'P5',
            'P6',  # middle level node
            'Raw3',  # bottom level node
        ]
        mgr = NodeManager(datetime.now(), 10, self.lfl_params + ['Floating'],
                          requested, [], self.derived_nodes, {}, {})
        gr = graph_nodes(mgr)
        gr_all, gr_st, order = process_order(gr, mgr)

        self.assertEqual(len(gr_st), 11)
        pos = order.index
        self.assertTrue(pos('P8') > pos('Raw5'))
        self.assertTrue(pos('P7') > pos('P4'))
        self.assertTrue(pos('P7') > pos('P5'))
        self.assertTrue(pos('P7') > pos('P6'))
        self.assertTrue(pos('P6') > pos('Raw3'))
        self.assertTrue(pos('P5') > pos('Raw3'))
        self.assertTrue(pos('P5') > pos('Raw4'))
        self.assertTrue(pos('P4') > pos('Raw1'))
        self.assertTrue(pos('P4') > pos('Raw2'))
        self.assertFalse('Floating' in order)
        self.assertFalse('root' in order)  #don't include the root!
    def test_dependency_with_lowlevel_dependencies_requested(self):
        """ Simulate requesting a Raw Parameter as a dependency. This requires
        the requested node to be removed when it is not at the top of the
        dependency tree.
        """
        requested = ["P7", "P8", "P4", "P5", "P6", "Raw3"]  # top level nodes  # middle level node  # bottom level node
        mgr = NodeManager(
            {"Start Datetime": datetime.now()},
            10,
            self.lfl_params + ["Floating"],
            requested,
            [],
            self.derived_nodes,
            {},
            {},
        )
        gr = graph_nodes(mgr)
        gr_all, gr_st, order = process_order(gr, mgr)

        self.assertEqual(len(gr_st), 11)
        pos = order.index
        self.assertTrue(pos("P8") > pos("Raw5"))
        self.assertTrue(pos("P7") > pos("P4"))
        self.assertTrue(pos("P7") > pos("P5"))
        self.assertTrue(pos("P7") > pos("P6"))
        self.assertTrue(pos("P6") > pos("Raw3"))
        self.assertTrue(pos("P5") > pos("Raw3"))
        self.assertTrue(pos("P5") > pos("Raw4"))
        self.assertTrue(pos("P4") > pos("Raw1"))
        self.assertTrue(pos("P4") > pos("Raw2"))
        self.assertFalse("Floating" in order)
        self.assertFalse("root" in order)  # don't include the root!
 def test_required_available(self):
     nodes = ["a", "b", "c"]
     required = ["a", "c"]
     mgr = NodeManager({"Start Datetime": datetime.now()}, 10, nodes, nodes, required, {}, {}, {})
     _graph = graph_nodes(mgr)
     gr_all, gr_st, order = process_order(_graph, mgr)
     self.assertEqual(set(required) - set(order), set())
 def test_required_available(self):
     nodes = ['a', 'b', 'c']
     required = ['a', 'c']
     mgr = NodeManager(datetime.now(), 10, nodes, nodes, required, {}, {},
                       {})
     _graph = graph_nodes(mgr)
     gr_all, gr_st, order = process_order(_graph, mgr)
     self.assertEqual(set(required) - set(order), set())
 def test_required_available(self):
     nodes = ['a', 'b', 'c']
     required = ['a', 'c']
     mgr = NodeManager(datetime.now(), 10, nodes, nodes, required, {}, {},
                       {})
     _graph = graph_nodes(mgr)
     gr_all, gr_st, order = process_order(_graph, mgr)
     self.assertEqual(set(required) - set(order), set())
    def _generate_json(self, lfl_params):
        '''
        Returns list of parameters used in the spanning tree.

        Note: LFL parameters not used will not be returned!
        '''
        print "Establishing Node dependencies from Analysis Engine"
        # Ensure file is a valid HDF file before continuing:
        derived_nodes = get_derived_nodes(settings.NODE_MODULES)
        required_params = derived_nodes.keys()

        # TODO: Update ac_info with keys from provided fields:
        ac_info = {
            'Family': u'B737 NG',
            'Frame': u'737-3C',
            'Identifier': u'15',
            'Main Gear To Lowest Point Of Tail': None,
            'Main Gear To Radio Altimeter Antenna': None,
            'Manufacturer Serial Number': u'39009',
            'Manufacturer': u'Boeing',
            'Model': u'B737-8JP',
            'Precise Positioning': True,
            'Series': u'B737-800',
            'Tail Number': 'G-ABCD',
        }

        # TODO: Option to populate an AFR:
        achieved_flight_record = {}

        # Generate the dependency tree:
        node_mgr = NodeManager(
            {},
            1000,
            lfl_params,
            required_params,
            [],
            derived_nodes,
            ac_info,
            achieved_flight_record,
        )
        _graph = graph_nodes(node_mgr)
        gr_all, gr_st, order = process_order(_graph, node_mgr)

        # Save the dependency tree to tree.json:
        tree = os.path.join(AJAX_DIR, 'tree.json')
        with open(tree, 'w') as fh:
            json.dump(graph_adjacencies(gr_st), fh, indent=4)

        # Save the list of nodes to node_list.json:
        node_list = os.path.join(AJAX_DIR, 'node_list.json')
        spanning_tree_params = sorted(gr_st.nodes())
        with open(node_list, 'w') as fh:
            json.dump(spanning_tree_params, fh, indent=4)
        return
    def _generate_json(self, lfl_params):
        '''
        Returns list of parameters used in the spanning tree.

        Note: LFL parameters not used will not be returned!
        '''
        print "Establishing Node dependencies from Analysis Engine"
        # Ensure file is a valid HDF file before continuing:
        derived_nodes = get_derived_nodes(settings.NODE_MODULES)
        required_params = derived_nodes.keys()

        # TODO: Update ac_info with keys from provided fields:
        ac_info = {
            'Family': u'B737 NG',
            'Frame': u'737-3C',
            'Identifier': u'15',
            'Main Gear To Lowest Point Of Tail': None,
            'Main Gear To Radio Altimeter Antenna': None,
            'Manufacturer Serial Number': u'39009',
            'Manufacturer': u'Boeing',
            'Model': u'B737-8JP',
            'Precise Positioning': True,
            'Series': u'B737-800',
            'Tail Number': 'G-ABCD',
        }

        # TODO: Option to populate an AFR:
        achieved_flight_record = {}

        # Generate the dependency tree:
        node_mgr = NodeManager(
            {},
            1000,
            lfl_params,
            required_params,
            [],
            derived_nodes,
            ac_info,
            achieved_flight_record,
        )
        _graph = graph_nodes(node_mgr)
        gr_all, gr_st, order = process_order(_graph, node_mgr)

        # Save the dependency tree to tree.json:
        tree = os.path.join(AJAX_DIR, 'tree.json')
        with open(tree, 'w') as fh:
            json.dump(graph_adjacencies(gr_st), fh, indent=4)

        # Save the list of nodes to node_list.json:
        node_list = os.path.join(AJAX_DIR, 'node_list.json')
        spanning_tree_params = sorted(gr_st.nodes())
        with open(node_list, 'w') as fh:
            json.dump(spanning_tree_params, fh, indent=4)
        return
    def test_dependency(self):
        requested = ['P7', 'P8']
        mgr = NodeManager(datetime.now(), 10, self.lfl_params, requested, [],
                          self.derived_nodes, {}, {})
        gr = graph_nodes(mgr)
        gr_all, gr_st, order = process_order(gr, mgr)

        self.assertEqual(len(gr_st), 11)
        pos = order.index
        self.assertTrue(pos('P8') > pos('Raw5'))
        self.assertTrue(pos('P7') > pos('P4'))
        self.assertTrue(pos('P7') > pos('P5'))
        self.assertTrue(pos('P7') > pos('P6'))
        self.assertTrue(pos('P6') > pos('Raw3'))
        self.assertTrue(pos('P5') > pos('Raw3'))
        self.assertTrue(pos('P5') > pos('Raw4'))
        self.assertTrue(pos('P4') > pos('Raw1'))
        self.assertTrue(pos('P4') > pos('Raw2'))
        self.assertFalse('root' in order)  #don't include the root!
        """
 def test_dependency(self):
     requested = ['P7', 'P8']
     mgr = NodeManager({'Start Datetime': datetime.now()}, 10, self.lfl_params, requested, [],
                       self.derived_nodes, {}, {})
     gr = graph_nodes(mgr)
     gr_all, gr_st, order = process_order(gr, mgr)
     
     self.assertEqual(len(gr_st), 11)
     pos = order.index
     self.assertTrue(pos('P8') > pos('Raw5'))
     self.assertTrue(pos('P7') > pos('P4'))
     self.assertTrue(pos('P7') > pos('P5'))
     self.assertTrue(pos('P7') > pos('P6'))
     self.assertTrue(pos('P6') > pos('Raw3'))
     self.assertTrue(pos('P5') > pos('Raw3'))
     self.assertTrue(pos('P5') > pos('Raw4'))
     self.assertTrue(pos('P4') > pos('Raw1'))
     self.assertTrue(pos('P4') > pos('Raw2'))
     self.assertFalse('root' in order) #don't include the root!
     
     """
    def test_dependency(self):
        requested = ["P7", "P8"]
        mgr = NodeManager(
            {"Start Datetime": datetime.now()}, 10, self.lfl_params, requested, [], self.derived_nodes, {}, {}
        )
        gr = graph_nodes(mgr)
        gr_all, gr_st, order = process_order(gr, mgr)

        self.assertEqual(len(gr_st), 11)
        pos = order.index
        self.assertTrue(pos("P8") > pos("Raw5"))
        self.assertTrue(pos("P7") > pos("P4"))
        self.assertTrue(pos("P7") > pos("P5"))
        self.assertTrue(pos("P7") > pos("P6"))
        self.assertTrue(pos("P6") > pos("Raw3"))
        self.assertTrue(pos("P5") > pos("Raw3"))
        self.assertTrue(pos("P5") > pos("Raw4"))
        self.assertTrue(pos("P4") > pos("Raw1"))
        self.assertTrue(pos("P4") > pos("Raw2"))
        self.assertFalse("root" in order)  # don't include the root!

        """