@Test public void testTestFilter() { String hostname = _config.getHostname(); Flow flow = Flow.builder().setIngressNode(hostname).setDstIp(IP2).setTag("tag").build(); assertThat( TestFiltersAnswerer.getRow(ACL, flow, _config), allOf( hasColumn(COL_ACTION, equalTo("DENY"), Schema.STRING), hasColumn(COL_FILTER_NAME, equalTo(ACL.getName()), Schema.STRING))); }
@Before public void setup() { _flow = Flow.builder() .setIngressNode("ingress") .setTag("tag") .setDstIp(Ip.parse("1.1.1.1")) .build(); _describerNoNamesNorMetadata = new IpSpaceDescriber( new AclTracer(_flow, null, ImmutableMap.of(), ImmutableMap.of(), ImmutableMap.of())); }
@Test public void testSetFlowStatesMultiple() { PacketHeaderConstraints phc = PacketHeaderConstraints.builder() .setFlowStates(ImmutableSet.of(FlowState.NEW, FlowState.ESTABLISHED)) .build(); Builder builder = Flow.builder(); thrown.expect(IllegalArgumentException.class); setFlowStates(phc, builder); }
@Test public void flowHistoryToRow() { Set<FlowTrace> traces = ImmutableSet.of( new FlowTrace(FlowDisposition.ACCEPTED, ImmutableList.of(), "notes1"), new FlowTrace(FlowDisposition.DENIED_OUT, ImmutableList.of(), "notes2")); Flow flow = Flow.builder().setTag("tag").setIngressNode("node").setDstIp(Ip.parse("1.1.1.1")).build(); FlowHistoryInfo historyInfo = new FlowHistoryInfo( flow, ImmutableMap.of("env", new Environment(null, null, null, null, null, null, null)), ImmutableMap.of("env", traces)); Row row = TracerouteAnswerer.flowHistoryToRow(historyInfo); assertThat( row, equalTo( Row.of( TracerouteAnswerer.COL_FLOW, flow, TracerouteAnswerer.COL_TRACES, historyInfo.getPaths().values().stream().findAny()))); } }
@Test public void testSetTcpFlags() { Builder builder = Flow.builder().setIngressNode("node").setIngressInterface("iface").setTag("tag"); PacketHeaderConstraints phc = PacketHeaderConstraints.builder() .setTcpFlags(Collections.singleton(TcpFlagsMatchConditions.ACK_TCP_FLAG)) .build(); setTcpFlags(phc, builder); assertThat(builder.build().getTcpFlagsAck(), equalTo(1)); }
@Test public void testDefaultPacketLength() { Builder builder = Flow.builder().setIngressNode("node").setIngressInterface("iface").setTag("tag"); PacketHeaderConstraints phc = PacketHeaderConstraints.unconstrained(); setPacketLength(phc, builder); assertThat(builder.build().getPacketLength(), equalTo(DEFAULT_PACKET_LENGTH)); }
@Test public void testSetFlowStates() { Builder builder = Flow.builder().setIngressNode("node").setIngressInterface("iface").setTag("tag"); PacketHeaderConstraints phc = PacketHeaderConstraints.builder() .setFlowStates(Collections.singleton(FlowState.ESTABLISHED)) .build(); setFlowStates(phc, builder); assertThat(builder.build().getState(), equalTo(FlowState.ESTABLISHED)); }
@Test public void testFlowTracesToRowsMaxTraces() { Flow flow = Flow.builder().setTag("tag").setIngressNode("node").setDstIp(Ip.parse("1.1.1.1")).build(); SortedMap<Flow, List<Trace>> flowTraces = ImmutableSortedMap.of( flow, ImmutableList.of( new Trace(FlowDisposition.DENIED_OUT, ImmutableList.of()), new Trace(FlowDisposition.DENIED_IN, ImmutableList.of()))); Multiset<Row> rows = flowTracesToRows(flowTraces, 1); assertThat( rows.iterator().next(), allOf( hasColumn( COL_FLOW, allOf(hasDstIp(Ip.parse("1.1.1.1")), hasIngressNode("node"), hasTag("tag")), Schema.FLOW), hasColumn(COL_TRACES, hasSize(1), Schema.set(Schema.TRACE)), hasColumn(TracerouteAnswerer.COL_TRACE_COUNT, equalTo(2), Schema.INTEGER))); }
@Test public void testSetEcnValue() { Builder builder = Flow.builder().setIngressNode("node").setIngressInterface("iface").setTag("tag"); PacketHeaderConstraints phc = PacketHeaderConstraints.builder().setEcns(IntegerSpace.of(1)).build(); setEcnValue(phc, builder); assertThat(builder.build().getEcn(), equalTo(1)); }
@Test public void testSetTcpFlagsMultiple() { PacketHeaderConstraints phc = PacketHeaderConstraints.builder() .setTcpFlags( ImmutableSet.of( TcpFlagsMatchConditions.ACK_TCP_FLAG, TcpFlagsMatchConditions.builder().build())) .build(); Builder builder = Flow.builder(); thrown.expect(IllegalArgumentException.class); setTcpFlags(phc, builder); } }
@Test public void testSetDscpValueMultiple() { PacketHeaderConstraints phc = PacketHeaderConstraints.builder().setDscps(PacketHeaderConstraints.VALID_DSCP).build(); Builder builder = Flow.builder(); thrown.expect(IllegalArgumentException.class); setDscpValue(phc, builder); }
@Test public void testSetFragmentOffsets() { Builder builder = Flow.builder().setIngressNode("node").setIngressInterface("iface").setTag("tag"); PacketHeaderConstraints phc = PacketHeaderConstraints.builder() .setFragmentOffsets(IntegerSpace.of(new SubRange(2, 2))) .build(); setFragmentOffsets(phc, builder); assertThat(builder.build().getFragmentOffset(), equalTo(2)); }
@Test public void testColumnComparatorFlow() { String col = "col1"; ColumnMetadata columnMetadata = new ColumnMetadata(col, Schema.FLOW, "colDesc"); Comparator<Row> comparator = _manager.columnComparator(columnMetadata); Row r1 = Row.of(col, Flow.builder().setDstIp(Ip.ZERO).setIngressNode("a").setTag("a").build()); Row r2 = Row.of(col, Flow.builder().setDstIp(Ip.MAX).setIngressNode("a").setTag("a").build()); assertThat(comparator.compare(r1, r2), lessThan(0)); }
@Test public void testMatchFlow() { TcpFlags flags = TcpFlags.builder().setUrg(true).setRst(true).build(); TcpFlagsMatchConditions conditions = TcpFlagsMatchConditions.builder().setTcpFlags(flags).setUseUrg(true).build(); assertThat( conditions.match(Flow.builder().setTcpFlagsUrg(1).setIngressNode("n").setTag("t").build()), equalTo(true)); assertThat( conditions.match(Flow.builder().setTcpFlagsUrg(0).setIngressNode("n").setTag("t").build()), equalTo(false)); }
@Test public void testSetFragmentOffsetsMultiple() { PacketHeaderConstraints phc = PacketHeaderConstraints.builder() .setFragmentOffsets(IntegerSpace.of(new SubRange(0, 10))) .build(); Builder builder = Flow.builder(); thrown.expect(IllegalArgumentException.class); setFragmentOffsets(phc, builder); }
@Test public void testSetIcmpValueMultiple() { PacketHeaderConstraints phc = PacketHeaderConstraints.builder() .setIcmpCodes(IntegerSpace.of(new SubRange(0, 10))) .build(); Builder builder = Flow.builder(); thrown.expect(IllegalArgumentException.class); setIcmpValues(phc, builder); }
@Test public void testSetDstPortMultiple() { PacketHeaderConstraints phc = PacketHeaderConstraints.builder().setDstPorts(IntegerSpace.of(new SubRange(1, 10))).build(); Builder builder = Flow.builder(); thrown.expect(IllegalArgumentException.class); setDstPort(phc, builder); }
@Test public void testSetMultiplePacketLengths() { PacketHeaderConstraints phc = PacketHeaderConstraints.builder() .setPacketLengths(IntegerSpace.of(new SubRange(1, 10))) .build(); Builder builder = Flow.builder(); thrown.expect(IllegalArgumentException.class); setPacketLength(phc, builder); }
@Test public void testSetEcnValuesMultiple() { PacketHeaderConstraints phc = PacketHeaderConstraints.builder().setEcns(IntegerSpace.of(new SubRange(0, 3))).build(); Builder builder = Flow.builder(); thrown.expect(IllegalArgumentException.class); setEcnValue(phc, builder); }
@Test public void testSetSrcPortMultiple() { Builder builder = Flow.builder().setIngressNode("node").setTag("tag"); PacketHeaderConstraints phc = PacketHeaderConstraints.builder().setSrcPorts(IntegerSpace.of(new SubRange(1, 10))).build(); thrown.expect(IllegalArgumentException.class); setSrcPort(phc, builder); }