LogicallyAttachedClassifier implements ClassifierInterface { @Override public FlowDetails initClassifierTable(String nodeName) { MatchBuilder match = new MatchBuilder(); Action geniusDispatcher = SfcOpenflowUtils.createActionResubmitTable(GENIUS_DISPATCHER_TABLE, 0); List<Action> theActionList = new ArrayList<Action>() {{ add(geniusDispatcher); }}; InstructionsBuilder isb = SfcOpenflowUtils.wrapActionsIntoApplyActionsInstruction(theActionList); FlowBuilder fb = SfcOpenflowUtils.createFlowBuilder( ClassifierGeniusIntegration.getClassifierTable(), SfcScfOfUtils.FLOW_PRIORITY_MATCH_ANY, "MatchAny", match, isb); LOG.info("initClassifierTable - jump to table: {}", ClassifierGeniusIntegration.getClassifierTable()); return classifierHandler.addRspRelatedFlowIntoNode(nodeName, fb, OpenflowConstants.SFC_FLOWS); } LogicallyAttachedClassifier(LogicalClassifierDataGetter theDataGetter); @Override FlowDetails initClassifierTable(String nodeName); @Override FlowDetails createClassifierOutFlow(String flowKey,
                                               Match match,
                                               SfcNshHeader sfcNshHeader,
                                               String classifierNodeName); @Override FlowDetails createClassifierInFlow(String flowKey, SfcNshHeader sfcNshHeader, Long outPort, String nodeName); @Override FlowDetails createClassifierRelayFlow(String flowKey, SfcNshHeader sfcNshHeader, String nodeName); @Override List<FlowDetails> createDpdkFlows(String nodeName, long rspPathId); @Override Optional<String> getNodeName(String theInterfaceName); @Override Optional<Long> getInPort(String ifName, String nodeName);  }
@Test public void initClassifierTest() { Assert.assertFalse(logicalScf.initClassifierTable(FIRST_SF_NODE_NAME).getFlow() .getInstructions().getInstruction().isEmpty()); }