def test_it_should_not_register_an_invalid_test_suite(self): try: ComplianceTestSuite.register('my-test-suite', 'a') self.fail("allowed an invalid ComplianceTestSuite to be registered") except InvalidComplianceTestSuiteError, e: self.assertEqual('a', e.test_suite)
def test_it_should_not_register_an_invalid_test_suite(self): try: ComplianceTestSuite.register('my-test-suite', 'a') self.fail( "allowed an invalid ComplianceTestSuite to be registered") except InvalidComplianceTestSuiteError, e: self.assertEqual('a', e.test_suite)
def test_it_should_not_register_two_test_suites_with_the_same_identifier(self): ComplianceTestSuite.register('my-test-suite', ComplianceTestSuiteTestCase.MyTestSuite) try: ComplianceTestSuite.register('my-test-suite', ComplianceTestSuiteTestCase.AnotherTestSuite) self.fail("allowed two ComplianceTestSuites to be registered with the same id") except DuplicateComplianceTestSuiteIdentifier, e: self.assertEqual('my-test-suite', e.identifier)
def test_it_should_not_register_the_same_test_suite_with_two_identifiers(self): ComplianceTestSuite.register('my-test-suite', ComplianceTestSuiteTestCase.MyTestSuite) try: ComplianceTestSuite.register('another-test-suite', ComplianceTestSuiteTestCase.MyTestSuite) self.fail("allowed two identifiers to be assigned to a ComplianceTestSuite") except DuplicateComplianceTestSuite, e: self.assertEqual(ComplianceTestSuiteTestCase.MyTestSuite, e.test_suite)
def test_it_should_raise_if_try_to_get_a_non_existent_test_suite(self): ComplianceTestSuite.register('my-test-suite', ComplianceTestSuiteTestCase.MyTestSuite) try: ComplianceTestSuite.get('aaa') self.fail("expected an UnknownComplianceTestSuite error") except UnknownComplianceTestSuiteError, e: self.assertEqual('aaa', e.identifier)
def test_it_should_not_register_two_test_suites_with_the_same_identifier( self): ComplianceTestSuite.register('my-test-suite', ComplianceTestSuiteTestCase.MyTestSuite) try: ComplianceTestSuite.register( 'my-test-suite', ComplianceTestSuiteTestCase.AnotherTestSuite) self.fail( "allowed two ComplianceTestSuites to be registered with the same id" ) except DuplicateComplianceTestSuiteIdentifier, e: self.assertEqual('my-test-suite', e.identifier)
def test_it_should_not_register_the_same_test_suite_with_two_identifiers( self): ComplianceTestSuite.register('my-test-suite', ComplianceTestSuiteTestCase.MyTestSuite) try: ComplianceTestSuite.register( 'another-test-suite', ComplianceTestSuiteTestCase.MyTestSuite) self.fail( "allowed two identifiers to be assigned to a ComplianceTestSuite" ) except DuplicateComplianceTestSuite, e: self.assertEqual(ComplianceTestSuiteTestCase.MyTestSuite, e.test_suite)
def test_plan(self): suites = [] for suite in self.test_suites(): if self.__enable_test_suite(suite): suites.append(suite) return map(lambda s: ComplianceTestSuite.get(s), suites)
def __enable_test_suite(self, suite): if self.has_option("ts-" + suite, self.klass): if self.suite_rx != None: if ComplianceTestSuite.get(suite).title().lower().find(self.suite_rx.lower()) == -1: return False for configuration in map(lambda c: c.strip(), self.get("ts-" + suite, self.klass).split("|")): options = map(lambda s: s.strip(), configuration.split(",")) mandatory = options[0] == "mandatory" protocols = options[1::] if (mandatory or not self.skip_optional) and (not False in map(lambda p: p in self.protocols, protocols)): return True return False
class BasicIPv6TransitionMechanisms(ComplianceTestSuite): """ Basic IPv6 Transition Mechanisms for IPv6 Hosts and Routers The key to a successful IPv6 transition is compatibility with the large installed base of IPv4 hosts and routers. Maintaining compatibility with IPv4 while deploying IPv6 will streamline the task of transitioning the Internet to IPv6. These tests cover establishing point-to-point tunnels by encapsulating IPv6 packets within IPv4 headers to carry them over IPv4 routing infrastructures. @private Author: MWR Source: RFC4213 """ TestCase_001 = encapsulation.IPv4HeaderAddedTestCase TestCase_002 = encapsulation.CorrectVersionFieldTestCase TestCase_003 = encapsulation.CorrectLengthFieldTestCase TestCase_004 = encapsulation.CorrectProtocolFieldTestCase TestCase_005 = encapsulation.CorrectIPv4SourceAddressTestCase TestCase_006 = encapsulation.CorrectIPv4DestinationAddressTestCase TestCase_007 = encapsulation.CorrectIPv6SourceAddressTestCase TestCase_008 = encapsulation.CorrectIPv6DestinationAddressTestCase TestCase_009 = neighbor_discovery.RespondsToNUDProbeTestCase TestCase_010 = static_tunnel_fragmentation.ReassemblesTo1500TestCase TestCase_011 = static_tunnel_fragmentation.DontFragmentBitNotSetTestCase ComplianceTestSuite.register('basic-ipv6-transition-mechanisms', BasicIPv6TransitionMechanisms)
def test_it_should_register_a_test_suite(self): ComplianceTestSuite.register('my-test-suite', ComplianceTestSuiteTestCase.MyTestSuite) self.assertEqual(1, len(ComplianceTestSuite.all())) self.assertEqual('my-test-suite', ComplianceTestSuite.all()[0])
TestCase_229 = options_processing_destination_options_header.OptionsProcessingDestinationOptionsHeaderPad1TestCase TestCase_230 = options_processing_destination_options_header.OptionsProcessingDestinationOptionsHeaderPadNTestCase TestCase_231 = options_processing_destination_options_header.OptionsProcessingDestinationOptionsHeaderMostSignificantBits00TestCase TestCase_232 = options_processing_destination_options_header.OptionsProcessingDestinationOptionsHeaderMostSignificantBits01TestCase TestCase_233 = options_processing_destination_options_header.OptionsProcessingDestinationOptionsHeaderMostSignificantBits10UnicastDestinationTestCase TestCase_234 = options_processing_destination_options_header.OptionsProcessingDestinationOptionsHeaderMostSignificantBits11UnicastDestinationTestCase TestCase_235 = options_processing_destination_options_header.OptionsProcessingDestinationOptionsHeaderMostSignificantBits10MulticastDestinationTestCase TestCase_236 = options_processing_destination_options_header.OptionsProcessingDestinationOptionsHeaderMostSignificantBits11MulticastDestinationTestCase # TestCase_237 for end nodes only (unrecognised_routing_type.UnrecognisedRoutingTypeType33TestCase) # TestCase_238 for end nodes only (unrecognised_routing_type.UnrecognisedRoutingTypeType0TestCase) TestCase_239 = unrecognised_routing_type.UnrecognisedRoutingTypeType33IntermediateNodeTestCase TestCase_240 = unrecognised_routing_type.UnrecognisedRoutingTypeType0IntermediateNodeTestCase # Group 3: Fragmentation TestCase_301 = fragment_reassembly.FragmentReassemblyAllFragmentsValidTestCase TestCase_302 = fragment_reassembly.FragmentReassemblyAllFragmentsValidInReverseOrderTestCase TestCase_303 = fragment_reassembly.FragmentReassemblyFragmentIDsDifferBetweenFragmentsTestCase TestCase_304 = fragment_reassembly.FragmentReassemblySourceAddressesDifferBetweenFragmentsTestCase TestCase_305 = fragment_reassembly.FragmentReassemblyDestinationAddressesDifferBetweenFragmentsTestCase TestCase_306 = fragment_reassembly.FragmentReassemblyReassembleTo1500TestCase TestCase_307 = reassembly_time_exceeded.ReassemblyTimeExceededTimeElapsedBetweenFragmentsLessThanSixtySecondsTestCase TestCase_308 = reassembly_time_exceeded.ReassemblyTimeExceededTimeElapsedBeforeLastFragmentsArriveTestCase TestCase_309 = reassembly_time_exceeded.ReassemblyTimeExceededGlobalTimeExceededOnlyFirstFragmentReceivedTestCase TestCase_310 = reassembly_time_exceeded.ReassemblyTimeExceededLinkLocalTimeExceededOnlyFirstFragmentReceivedTestCase TestCase_311 = reassembly_time_exceeded.ReassemblyTimeExceededTimeExceededOnlySecondFragmentReceivedTestCase TestCase_312 = fragment_header_mbit_set_payload_length_invalid.FragmentHeaderMBitSetPayloadLengthInvalidTestCase TestCase_313 = stub_fragment_header.StubFragmentHeaderTestCase ComplianceTestSuite.register('ipv6-basic-end-node-specification', IPv6BasicEndNodeSpecification) ComplianceTestSuite.register('ipv6-basic-intermediate-node-specification', IPv6BasicIntermediateNodeSpecification)
TestCase_012 = validation_of_dad_neighbor_solicitations.UutReceivesInvalidDadNsTargetMulticastTestCase TestCase_013 = validation_of_dad_neighbor_solicitations.UutReceivesInvalidDadNsContainsSLLTestCase TestCase_014 = validation_of_dad_neighbor_solicitations.UutReceivesValidDadNsContainsReservedFieldRouterTestCase TestCase_015 = validation_of_dad_neighbor_solicitations.UutReceivesValidDadNsContainsTLLRouterTestCase # 3.1.4 TestCase_016 = validation_of_dad_neighbor_advertisements.UutReceiveInvalidDadNaLength16TestCase TestCase_017 = validation_of_dad_neighbor_advertisements.UutReceiveInvalidDadNaHopLimit254TestCase TestCase_018 = validation_of_dad_neighbor_advertisements.UutReceivesInvalidDadNaIcmpCode1TestCase TestCase_019 = validation_of_dad_neighbor_advertisements.UutReceivesInvalidDadNaInvalidChecksumTestCase TestCase_020 = validation_of_dad_neighbor_advertisements.UutReceivesInvalidDadNaSolicitedFlag1TestCase TestCase_021 = validation_of_dad_neighbor_advertisements.UutReceivesInvalidDadNaTargetMulticastTestCase TestCase_022 = validation_of_dad_neighbor_advertisements.UutReceivesInvalidDadNaOptionLength0TestCase TestCase_023 = validation_of_dad_neighbor_advertisements.UutReceivesValidDadNaContainsSLLRouterTestCase TestCase_024 = validation_of_dad_neighbor_advertisements.UutReceivesValidDadNaReservedFieldRouterTestCase # 3.1.5 TestCase_025 = receiving_neighbor_solicitations_for_addr_resolution.ReceivingDadNsForAddrResSrcUnicastTestCase TestCase_026 = receiving_neighbor_solicitations_for_addr_resolution.ReceivingDadNsForAddrResDstIsUutTestCase # 3.2.1 TestCase_027 = global_address_autoconfiguration_and_dad.GlobalAddressAutoConfigurationAndDadGlobalRouterTestCase TestCase_028 = global_address_autoconfiguration_and_dad.GlobalAddressAutoConfigurationAndDadPrefixEndingInZeroRouterTestCase TestCase_029 = global_address_autoconfiguration_and_dad.GlobalAddressAutoConfigurationAndDadSiteLocalRouterTestCase ComplianceTestSuite.register('stateless-address-autoconfiguration-end-node', StatelessAddressAutoconfigurationHostTestSuite) ComplianceTestSuite.register( 'stateless-address-autoconfiguration-intermediate-node', StatelessAddressAutoconfigurationRouterTestSuite)
def setUp(self): ComplianceTestSuite.clear()
TestCase_016 = hop_limit_exceeded.ReceiveHopLimit0TestCase TestCase_017 = hop_limit_exceeded.DecrementHopLimitTo0TestCase TestCase_018 = erroneous_header_field.ErroneousHeaderFieldTestCase TestCase_019 = unrecognized_next_header.UnrecognizedNextHeaderTestCase TestCase_020 = unknown_informational_message_type.UnknownInformationalMessageTypeTestCase TestCase_021 = error_condition_with_icmpv6_error_messages.FlawedDstUnreachableCode0WithDestinationUnreachableTestCase TestCase_022 = error_condition_with_icmpv6_error_messages.FlawedDstUnreachableCode3WithHopLimit0TestCase TestCase_023 = error_condition_with_icmpv6_error_messages.FlawedTimeExceededCode0WithNoRouteToDestinationTestCase TestCase_024 = error_condition_with_icmpv6_error_messages.FlawedTimeExceededCode1WithNoRouteToDestinationTestCase TestCase_025 = error_condition_with_icmpv6_error_messages.FlawedDstPacketTooBigWithAddressUnreachableTestCase TestCase_026 = error_condition_with_icmpv6_error_messages.FlawedParamProblemWithHopLimit0TestCase TestCase_027 = error_condition_with_multicast_destination.UDPPortUnreachableTestCase TestCase_028 = error_condition_with_multicast_destination.EchoRequestReassemblyTimeoutTestCase TestCase_029 = error_condition_with_non_unique_source.NonUniqueSourceUDPPortUnreachableTestCase TestCase_030 = error_condition_with_non_unique_source.NonUniqueSourceEchoRequestTooBigTestCase TestCase_031 = error_condition_with_non_unique_source.NonUniqueSourceReassemblyTimeoutTestCase TestCase_032 = error_condition_with_non_unique_source.NonUniqueSourceInvalidDestinationOptionsTestCase TestCase_033 = error_condition_with_non_unique_source_multicast.NonUniqueSourceMulticastUDPPortUnreachableTestCase TestCase_034 = error_condition_with_non_unique_source_multicast.NonUniqueSourceMulticastEchoRequestTooBigTestCase TestCase_035 = error_condition_with_non_unique_source_multicast.NonUniqueSourceMulticastReassemblyTimeoutTestCase TestCase_036 = error_condition_with_non_unique_source_multicast.NonUniqueSourceMulticastInvalidDestinationOptionsTestCase TestCase_036 = error_condition_with_non_unique_source_anycast.UDPPortUnreachableTestCase TestCase_037 = error_condition_with_non_unique_source_anycast.EchoRequestTooBigTestCase TestCase_038 = error_condition_with_non_unique_source_anycast.EchoRequestReassemblyTimeoutTestCase TestCase_039 = error_condition_with_non_unique_source_anycast.EchoRequestWithUnknownOptionInDestinationOptionsTestCase ComplianceTestSuite.register('icmpv6-end-node', ICMPv6EndNodeSpecification) ComplianceTestSuite.register('icmpv6-intermediate-node', ICMPv6IntermediateNodeSpecification)
class RouterAlertOption(ComplianceTestSuite): """ Router Alert Option The following tests cover the Router Alert Option header. New protocols, such as RSVP, use control datagrams which, while addressed to a particular destination, contain information that needs to be examined, and in some case updated, by routers along the path between the source and destination. It is desirable to forward regular datagrams as rapidly as possible, while ensuring that the router processes these special control datagrams appropriately. The Router Alert option is defined within the IPv6 Hop-by-Hop header, and informs the router that the contents of this datagram are of interest to the router and to handle any control data accordingly. These tests are designed to verify the readiness of an IPv6 implementation vis-a-vis the Router Alert Option specification. @private Author: MWR Source: RFC 2711 """ TestCase_001 = multicast_listener_discovery.MulticastListenerDiscoveryTestCase TestCase_002 = unrecognized_value.UnrecognizedValueTestCase ComplianceTestSuite.register('ipv6-router-alert-option', RouterAlertOption)
TestCase008 = server.dhcp_unique_identifier_contents.DHCPUniqueIdentifierContentsTestCase TestCase009 = server.dns_recursive_name_server_option_format.DNSRecursiveNameServerOptionFormatTestCase TestCase010 = server.domain_search_list_option_format.DomainSearchListOptionFormatTestCase TestCase011 = server.interface_id_option_format.InterfaceIDOptionFormatTestCase TestCase012 = server.relay_message_option_format.RelayMessageOptionFormatTestCase TestCase013 = should(server.configuration_of_dns_options. ReturningDNSRecursiveNameServerOptionTestCase) TestCase014 = server.configuration_of_dns_options.ReturningDNSServerandDomainSearchListOptionsTestCase TestCase015 = should(server.creation_and_transmission_of_reply_messages. ReplyMessageTransmissionTestCase) TestCase016 = server.creation_and_transmission_of_reply_messages.ReplyMessageTransmissionWithDNSRNSOptionTestCase TestCase017 = server.creation_and_transmission_of_reply_messages.ReplyMessageTransmissionWithDomainSearchListOptionTestCase TestCase018 = server.creation_and_transmission_of_reply_messages.RelayReplyMessageWithoutInterfaceIDTestCase TestCase019 = server.creation_and_transmission_of_reply_messages.RelayReplyMessageWithInterfaceIDTestCase TestCase020 = server.creation_and_transmission_of_relay_reply_messages.RelayReplyMessageTransmissionTestCase TestCase021 = server.creation_and_transmission_of_relay_reply_messages.MultipleRelayReplyMessageTransmissionTestCase TestCase022 = server.creation_and_transmission_of_relay_reply_messages.EncapsulatedRelayReplyMessageTransmissionTestCase TestCase023 = server.reception_of_invalid_information_request_message.ReceptionOfInformationRequestMessageViaUnicastTestCase TestCase024 = server.reception_of_invalid_information_request_message.ContainsServerIdentifierOptionTestCase TestCase025 = server.reception_of_invalid_information_request_message.ContainsIANAOptionTestCase TestCase026 = server.server_message_validation.AdvertiseMessageTestCase TestCase027 = server.server_message_validation.ReplyMessageTestCase TestCase028 = server.server_message_validation.RelayReplyMessageTestCase ComplianceTestSuite.register('stateless-dhcpv6-client', StatelessDHCPv6ServiceClientSpecification) #ComplianceTestSuite.register('dhcpv6-relay-agent', StatelessDHCPv6ServiceRelayAgentSpecification) ComplianceTestSuite.register('stateless-dhcpv6-server', StatelessDHCPv6ServiceServerSpecification)
A typical scenario for IPv6 tunneling is the case in which an intermediate node exerts explicit routing control by specifying particular forwarding paths for selected packets. This control is achieved by prepending IPv6 headers to each of the selected original packets. These prepended headers identify the forwarding paths. These tests are designed to verify the readiness of an IPv6 implementation vis-a-vis the Generic Packet Tunneling IPv6 specification, with a 4in6 tunnel implementation. @private Author: MWR Source: RFC2473 """ TestCase_001 = tn_4in6.encapsulation.TTLDecrementedTestCase TestCase_002 = tn_4in6.encapsulation.EntryPointAddressTestCase TestCase_003 = tn_4in6.encapsulation.EndPointAddressTestCase TestCase_004 = tn_4in6.packet_processing.EncapsulatingHopLimitDecrementedWithIPv4EncapsulatedTestCase TestCase_005 = tn_4in6.decapsulation.AllEncapsulatedOptionsRemovedIPv4TestCase TestCase_006 = tn_4in6.packet_processing.HopLimitExceededWithinTunnelTestCase TestCase_007 = tn_4in6.packet_processing.UnreachableNodeWithinTunnelIPv4TestCase TestCase_008 = tn_4in6.packet_processing.PacketTooBigWithinTunnelIPv4TestCase TestCase_009 = tn_4in6.post_processing.TTLExceededAfterTunnelTestCase TestCase_010 = tn_4in6.post_processing.UnreachableNodeAfterTunnelTestCase ComplianceTestSuite.register("generic-packet-tunneling-in-ipv6-on-6in6", GenericPacketTunnelingInIPv6On6In6) ComplianceTestSuite.register("generic-packet-tunneling-in-ipv6-on-4in6", GenericPacketTunnelingInIPv6On4In6)
TestCase_001 = dr.basic_message_exchange.BasicMessageExchangeTestCase TestCase_002 = dr.renew_message.RenewMessageTestCase TestCase_003 = dr.rebind_message.RebindMessageTestCase TestCase_004 = dr.release_message.ReleaseMessageTestCase TestCase_005 = dr.advertise_message_status.NoPrefixAvailTestCase class DHCPv6PrefixDelegationRR(ComplianceTestSuite): """ IPv6 Prefix Options for Dynamic Host Configuration Protocol - Requesting Router Tests in this group cover basic interoperability of the IPv6 Prefix Options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6-PD), Request for Comments 3633. These tests are designed to verify the readiness of DHCPv6 Requesting Router (Client) and Delegating Router (Server) interoperability vis-a-vis the specifications of the DHCPv6-PD protocol. """ TestCase_001 = rr.basic_message_exchange.BasicMessageExchangeTestCase TestCase_002 = rr.renew_message.RenewMessageTestCase TestCase_003 = rr.rebind_message.RebindMessageTestCase TestCase_004 = rr.release_message.ReleaseMessageTestCase TestCase_005 = rr.advertise_message_status.NoPrefixAvailTestCase ComplianceTestSuite.register('dhcpv6-pd-dr', DHCPv6PrefixDelegationDR) ComplianceTestSuite.register('dhcpv6-pd-rr', DHCPv6PrefixDelegationRR)
def tearDown(self): ComplianceTestSuite.clear()
def setUp(self): ComplianceTestSuite.clear() ComplianceTestSuite.register('ipv6-basic-specification', ConfigurationTestCase.TestSuiteA) ComplianceTestSuite.register('ipv6-default-address-selection', ConfigurationTestCase.TestSuiteB) ComplianceTestSuite.register('icmpv6', ConfigurationTestCase.TestSuiteC) ComplianceTestSuite.register('neighbour-discovery', ConfigurationTestCase.TestSuiteD) ComplianceTestSuite.register('pmtu-discovery', ConfigurationTestCase.TestSuiteE) ComplianceTestSuite.register('ipv6-router-alert-option', ConfigurationTestCase.TestSuiteF)
These tests are designed to verify the readiness of an IPv6 implementation vis-a-vis the Path MTU Discovery IPv6 specification. @private Author: MWR Source: IPv6 Ready Phase-1/Phase-2 Test Specification Core Protocols (Section 4) """ TestCase_001 = confirm_ping.ICMPv6EchoRequest64OctetsTestCase TestCase_002 = confirm_ping.ICMPv6EchoRequest1280OctetsTestCase TestCase_003 = confirm_ping.ICMPv6EchoRequest1500OctetsTestCase TestCase_004 = stored_pmtu.StoredPMTUTestCase TestCase_005 = non_zero_icmpv6_code.NonZeroICMPv6CodeTestCase TestCase_006 = reduce_pmtu_on_link.ReducePMTUOnLinkLinkLocalTestCase TestCase_007 = reduce_pmtu_on_link.ReducePMTUOnLinkGlobalTestCase TestCase_008 = reduce_pmtu_off_link.ReducePMTUOffLinkTestCase TestCase_009 = receiving_mtu_below_ipv6_minimum.MTUEqualTo56TestCase TestCase_010 = receiving_mtu_below_ipv6_minimum.MTUEqualTo1279TestCase TestCase_011 = increase_estimate.MTUIncreaseTestCase TestCase_012 = increase_estimate.MTUEqualTo0x1ffffffTestCase # TestCase_013 for hosts only (router_advertisement_with_mtu_option.RouterAdvertisementWithMTUOptionTestCase) TestCase_014 = checking_for_increase_in_pmtu.CheckingForIncreaseInPMTUTestCase # TestCase_015 = multicast_destination_one_router.MulticastDestinationOneRouterTestCase # TestCase_016 = multicast_destination_two_routers.MulticastDestinationTwoRoutersTestCase ComplianceTestSuite.register("pmtu-discovery-end-node", PathMTUDiscoveryEndNode) ComplianceTestSuite.register("pmtu-discovery-intermediate-node", PathMTUDiscoveryIntermediateNode)
TestCase_015 = packet_too_big_message_generation.MulticastDestinationTestCase TestCase_016 = hop_limit_exceeded.ReceiveHopLimit0TestCase TestCase_017 = hop_limit_exceeded.DecrementHopLimitTo0TestCase TestCase_018 = erroneous_header_field.ErroneousHeaderFieldTestCase TestCase_019 = unrecognized_next_header.UnrecognizedNextHeaderTestCase TestCase_020 = unknown_informational_message_type.UnknownInformationalMessageTypeTestCase TestCase_021 = error_condition_with_icmpv6_error_messages.FlawedDstUnreachableCode0WithDestinationUnreachableTestCase TestCase_022 = error_condition_with_icmpv6_error_messages.FlawedDstUnreachableCode3WithHopLimit0TestCase TestCase_023 = error_condition_with_icmpv6_error_messages.FlawedTimeExceededCode0WithNoRouteToDestinationTestCase TestCase_024 = error_condition_with_icmpv6_error_messages.FlawedTimeExceededCode1WithNoRouteToDestinationTestCase TestCase_025 = error_condition_with_icmpv6_error_messages.FlawedDstPacketTooBigWithAddressUnreachableTestCase TestCase_026 = error_condition_with_icmpv6_error_messages.FlawedParamProblemWithHopLimit0TestCase TestCase_027 = error_condition_with_multicast_destination.UDPPortUnreachableTestCase TestCase_028 = error_condition_with_multicast_destination.EchoRequestReassemblyTimeoutTestCase TestCase_029 = error_condition_with_non_unique_source.NonUniqueSourceUDPPortUnreachableTestCase TestCase_030 = error_condition_with_non_unique_source.NonUniqueSourceEchoRequestTooBigTestCase TestCase_031 = error_condition_with_non_unique_source.NonUniqueSourceReassemblyTimeoutTestCase TestCase_032 = error_condition_with_non_unique_source.NonUniqueSourceInvalidDestinationOptionsTestCase TestCase_033 = error_condition_with_non_unique_source_multicast.NonUniqueSourceMulticastUDPPortUnreachableTestCase TestCase_034 = error_condition_with_non_unique_source_multicast.NonUniqueSourceMulticastEchoRequestTooBigTestCase TestCase_035 = error_condition_with_non_unique_source_multicast.NonUniqueSourceMulticastReassemblyTimeoutTestCase TestCase_036 = error_condition_with_non_unique_source_multicast.NonUniqueSourceMulticastInvalidDestinationOptionsTestCase TestCase_037 = error_condition_with_non_unique_source_anycast.UDPPortUnreachableTestCase TestCase_038 = error_condition_with_non_unique_source_anycast.EchoRequestTooBigTestCase TestCase_039 = error_condition_with_non_unique_source_anycast.EchoRequestReassemblyTimeoutTestCase TestCase_040 = error_condition_with_non_unique_source_anycast.EchoRequestWithUnknownOptionInDestinationOptionsTestCase ComplianceTestSuite.register('icmpv6-end-node', ICMPv6EndNodeSpecification) ComplianceTestSuite.register('icmpv6-intermediate-node', ICMPv6IntermediateNodeSpecification)
TestCase003 = server.implementation_of_dhcp_constants.ValidUDPPortTestCase TestCase004 = server.implementation_of_dhcp_constants.InvalidUDPPortTestCase TestCase005 = server.server_message_format.ClientServerMessageFormatTestCase TestCase006 = server.server_message_format.RelayAgentServerMessageFormatTestCase TestCase007 = server.server_identifier_option_format.ServerIdentifierOptionFormatTestCase TestCase008 = server.dhcp_unique_identifier_contents.DHCPUniqueIdentifierContentsTestCase TestCase009 = server.dns_recursive_name_server_option_format.DNSRecursiveNameServerOptionFormatTestCase TestCase010 = server.domain_search_list_option_format.DomainSearchListOptionFormatTestCase TestCase011 = server.interface_id_option_format.InterfaceIDOptionFormatTestCase TestCase012 = server.relay_message_option_format.RelayMessageOptionFormatTestCase TestCase013 = should(server.configuration_of_dns_options.ReturningDNSRecursiveNameServerOptionTestCase) TestCase014 = server.configuration_of_dns_options.ReturningDNSServerandDomainSearchListOptionsTestCase TestCase015 = should(server.creation_and_transmission_of_reply_messages.ReplyMessageTransmissionTestCase) TestCase016 = server.creation_and_transmission_of_reply_messages.ReplyMessageTransmissionWithDNSRNSOptionTestCase TestCase017 = server.creation_and_transmission_of_reply_messages.ReplyMessageTransmissionWithDomainSearchListOptionTestCase TestCase018 = server.creation_and_transmission_of_reply_messages.RelayReplyMessageWithoutInterfaceIDTestCase TestCase019 = server.creation_and_transmission_of_reply_messages.RelayReplyMessageWithInterfaceIDTestCase TestCase020 = server.creation_and_transmission_of_relay_reply_messages.RelayReplyMessageTransmissionTestCase TestCase021 = server.creation_and_transmission_of_relay_reply_messages.MultipleRelayReplyMessageTransmissionTestCase TestCase022 = server.creation_and_transmission_of_relay_reply_messages.EncapsulatedRelayReplyMessageTransmissionTestCase TestCase023 = server.reception_of_invalid_information_request_message.ReceptionOfInformationRequestMessageViaUnicastTestCase TestCase024 = server.reception_of_invalid_information_request_message.ContainsServerIdentifierOptionTestCase TestCase025 = server.reception_of_invalid_information_request_message.ContainsIANAOptionTestCase TestCase026 = server.server_message_validation.AdvertiseMessageTestCase TestCase027 = server.server_message_validation.ReplyMessageTestCase TestCase028 = server.server_message_validation.RelayReplyMessageTestCase ComplianceTestSuite.register('stateless-dhcpv6-client', StatelessDHCPv6ServiceClientSpecification) #ComplianceTestSuite.register('dhcpv6-relay-agent', StatelessDHCPv6ServiceRelayAgentSpecification) ComplianceTestSuite.register('stateless-dhcpv6-server', StatelessDHCPv6ServiceServerSpecification)
TestCase_009 = source_address_selection.SourceAddressMustNotBeIPv4MappedOnSIITNodeTestCase class DefaultAddressSelectionIntermediateNode(ComplianceTestSuite): """ Default Address Selection - End Node The following tests cover Default Address Selection for Internet Protocol version 6 (IPv6) for both source and destination addresses, as described in RC3484. The algorithms described must be implemented by all IPv6 nodes, but do not override choices made by applications or upper-layer protocols. @private Author: MWR Source: RFC3484 """ TestCase_001 = source_address_selection.ChooseSameAddressTestCase TestCase_002 = source_address_selection.ChooseAppropriateScopeTestCase TestCase_003 = source_address_selection.PreferHomeAddressTestCase TestCase_004 = source_address_selection.PreferOutgoingInterfaceTestCase # TestCase_005 = source_address_selection.PreferMatchingLabelTestCase # TestCase_006 = source_address_selection.PreferPublicAddressTestCase # TestCase_007 = source_address_selection.UseLongestMatchingPrefixTestCase TestCase_008 = source_address_selection.SourceAddressMustBeIPv4MappedOnSIITNodeTestCase TestCase_009 = source_address_selection.SourceAddressMustNotBeIPv4MappedOnSIITNodeTestCase ComplianceTestSuite.register('default-address-selection-end-node', DefaultAddressSelectionEndNode) ComplianceTestSuite.register('default-address-selection-intermediate-node', DefaultAddressSelectionIntermediateNode)
TestCase_007 = client.transmission_of_no_addrs_available.TransmissionOfAdvertisementWithNoAddrsAvailableTestCase TestCase_008 = client.transmission_of_not_on_link.TransmissionOfNotOnLinkTestCase class DHCPv6ServerSpecification(ComplianceTestSuite): """ Dynamic Host Configuration Protocol for IPv6 (DHCPv6 Server) These tests are designed to verify the readiness of DHCPv6 server interoperability vis-a-vis the base specifications of the Dynamic Host Configuration Protocol for IPv6. @private Author: MWR Source: IPv6 Ready DHCPv6 Interoperability Test Suite (Group 1) """ TestCase_001 = server.dhcpv6_initialization.DHCPv6InitializationTestCase TestCase_002 = server.receipt_of_confirm_messages.ReceiptOfConfirmMessagesTestCase TestCase_003 = server.receipt_of_renew_messages.ReceiptOfRenewMessagesTestCase TestCase_004 = server.receipt_of_rebind_messages.ReceiptOfRebindMessagesTestCase TestCase_005 = server.receipt_of_release_messages.ReceiptOfReleaseMessagesTestCase TestCase_006 = server.receipt_of_decline_messages.ReceiptOfDeclineMessagesTestCase TestCase_007 = server.advertise_message_with_no_addrs_avail.AdvertiseMessagesWithNoAddrsAvailTestCase TestCase_008 = server.reply_message_with_not_on_link.ReplyMessagesWithNotOnLinkTestCase ComplianceTestSuite.register('dhcpv6-client', DHCPv6ClientSpecification) #ComplianceTestSuite.register('dhcpv6-relay-agent', DHCPv6RelayAgentSpecification) ComplianceTestSuite.register('dhcpv6-server', DHCPv6ServerSpecification)
Address options with the Neighbor Cache. """ pass #TestCase_301-304 for hosts only (redirected_on_link_valid) #TestCase_305-307 for hosts only (redirected_on_link_suspicious) #TestCase_308-316 for hosts only (redirected_on_link_invalid) #TestCase_317-320 for hosts only (redirected_to_alternate_router_valid) #TestCase_321-322 for hosts only (redirected_to_alternate_router_suspicious) #TestCase_323-331 for hosts only (redirected_to_alternate_router_invalid) #TestCase_332 for hosts only (redirected_twice) #TestCase_333 for hosts only (invalid_option) #TestCase_336 no_destination_cache_entry #TestCase_337-340 neighbor_cache_updated_no_nce #TestCase_341-344 neighbor_cache_updated_state_incomplete #TestCase_345-350 neighbor_cache_updated_state_reachable #TestCase_351-355 neighbor_cache_updated_state_stale #TestCase_356-360 neighbor_cache_updated_state_probe #TestCase_361-369 for hosts only (invalid_redirect_does_not_update_neighbor_cache) # TestCase_370 = redirect_transmit.SendRedirectTestCase # TestCase_371 = redirect_transmit.SendRedirectToAlternateRouterTestCase # TestCase_372 = redirect_transmit.SourceNotNeighborTestCase # TestCase_373 = redirect_transmit.DestinationMulticastTestCase # TestCase_374 = redirect_receive.RedirectTestCase ComplianceTestSuite.register('neighbor-discovery-end-node', NeighborDiscoverySpecification) ComplianceTestSuite.register('neighbor-discovery-intermediate-node', NeighborDiscoveryIntermediateNodeSpecification) ComplianceTestSuite.register('neighbor-discovery-end-node-redirect', NeighborDiscoveryRedirectFunctionSpecification) ComplianceTestSuite.register('neighbor-discovery-intermediate-node-intermediate', NeighborDiscoveryRedirectFunctionIntermediateNodeSpecification)
Author: MWR """ TestCase_001 = sending_cga_option_send.UUTSendsNSFromLinkLocalWithCGAOptionTestCase TestCase_002 = sending_cga_option_send.UUTSendsNSFromUnspecifiedWithCGAOptionTestCase TestCase_003 = sending_cga_option_send.UUTSendsNAFromLinkLocalWithCGAOptionTestCase TestCase_004 = sending_nonce_option_send.UUTSendsNSFromLinkLocalWithNonceTestCase TestCase_005 = sending_nonce_option_send.UUTSendsNSFromUnspecifiedWithNonceTestCase TestCase_006 = sending_nonce_option_send.UUTSendsNAFromLinkLocalWithNonceOptionTestCase TestCase_007 = sending_nonce_option_send.UUTSendsRAFromLinkLocalWithNonceOptionTestCase TestCase_008 = sending_rsa_option_send.UUTSendsNSFromLinkLocalWithRSAOptionTestCase TestCase_009 = sending_rsa_option_send.UUTSendsNSFromUnspecifiedWithRSAOptionTestCase TestCase_010 = sending_rsa_option_send.UUTSendsNAFromLinkLocalWithRSAOptionTestCase TestCase_011 = sending_rsa_option_send.UUTSendsRAFromLinkLocalWithRSAOptionTestCase TestCase_012 = sending_timestamp_option_send.UUTSendsNSFromLinkLocalWithTimeStampTestCase TestCase_013 = sending_timestamp_option_send.UUTSendsNSFromUnspecifiedWithTimeStampTestCase TestCase_014 = sending_timestamp_option_send.UUTSendsNAFromLinkLocalWithTimeStampOptionTestCase TestCase_015 = sending_timestamp_option_send.UUTSendsRAFromLinkLocalWithTimeStampOptionTestCase TestCase_016 = receiving_send.UUTProcessValidSendTestCase TestCase_017 = receiving_send.UUTProcessValidSendReservedFieldSetTestCase TestCase_018 = receiving_send.UUTReceivesNoCGAOptionTestCase TestCase_019 = receiving_send.UUTReceivesDifferentKeyTestCase TestCase_020 = receiving_send.UUTReceivesNoRSAOptionTestCase TestCase_021 = receiving_send.UUTReceivesNoNonceOptionTestCase TestCase_022 = receiving_send.UUTReceivesNoTimeStampOptionTestCase TestCase_023 = receiving_send.UUTReceivesRSAOptionNotLastTestCase ComplianceTestSuite.register('secure-neighbor-discovery-end-node', SecureNeighborDiscoveryEndNode) ComplianceTestSuite.register('secure-neighbor-discovery-intermediate-node', SecureNeighborDiscoveryIntermediateNode)
TestCase_008 = validation_of_dad_neighbor_solicitations.UutReceivesInvalidDadNsDstIsUutTentTestCase TestCase_009 = validation_of_dad_neighbor_solicitations.UutReceivesInvalidDadNsDstIsAllNodeTestCase TestCase_010 = validation_of_dad_neighbor_solicitations.UutReceivesInvalidDadNsICMPCode1TestCase TestCase_011 = validation_of_dad_neighbor_solicitations.UutReceivesInvalidDadNsInvalidChecksumTestCase TestCase_012 = validation_of_dad_neighbor_solicitations.UutReceivesInvalidDadNsTargetMulticastTestCase TestCase_013 = validation_of_dad_neighbor_solicitations.UutReceivesInvalidDadNsContainsSLLTestCase TestCase_014 = validation_of_dad_neighbor_solicitations.UutReceivesValidDadNsContainsReservedFieldRouterTestCase TestCase_015 = validation_of_dad_neighbor_solicitations.UutReceivesValidDadNsContainsTLLRouterTestCase # 3.1.4 TestCase_016 = validation_of_dad_neighbor_advertisements.UutReceiveInvalidDadNaLength16TestCase TestCase_017 = validation_of_dad_neighbor_advertisements.UutReceiveInvalidDadNaHopLimit254TestCase TestCase_018 = validation_of_dad_neighbor_advertisements.UutReceivesInvalidDadNaIcmpCode1TestCase TestCase_019 = validation_of_dad_neighbor_advertisements.UutReceivesInvalidDadNaInvalidChecksumTestCase TestCase_020 = validation_of_dad_neighbor_advertisements.UutReceivesInvalidDadNaSolicitedFlag1TestCase TestCase_021 = validation_of_dad_neighbor_advertisements.UutReceivesInvalidDadNaTargetMulticastTestCase TestCase_022 = validation_of_dad_neighbor_advertisements.UutReceivesInvalidDadNaOptionLength0TestCase TestCase_023 = validation_of_dad_neighbor_advertisements.UutReceivesValidDadNaContainsSLLRouterTestCase TestCase_024 = validation_of_dad_neighbor_advertisements.UutReceivesValidDadNaReservedFieldRouterTestCase # 3.1.5 TestCase_025 = receiving_neighbor_solicitations_for_addr_resolution.ReceivingDadNsForAddrResSrcUnicastTestCase TestCase_026 = receiving_neighbor_solicitations_for_addr_resolution.ReceivingDadNsForAddrResDstIsUutTestCase # 3.2.1 TestCase_027 = global_address_autoconfiguration_and_dad.GlobalAddressAutoConfigurationAndDadGlobalRouterTestCase TestCase_028 = global_address_autoconfiguration_and_dad.GlobalAddressAutoConfigurationAndDadPrefixEndingInZeroRouterTestCase TestCase_029 = global_address_autoconfiguration_and_dad.GlobalAddressAutoConfigurationAndDadSiteLocalRouterTestCase ComplianceTestSuite.register('stateless-address-autoconfiguration-end-node', StatelessAddressAutoconfigurationHostTestSuite) ComplianceTestSuite.register('stateless-address-autoconfiguration-intermediate-node', StatelessAddressAutoconfigurationRouterTestSuite)
def test_it_should_get_a_test_suite(self): ComplianceTestSuite.register('my-test-suite', ComplianceTestSuiteTestCase.MyTestSuite) self.assertEqual(ComplianceTestSuiteTestCase.MyTestSuite, ComplianceTestSuite.get('my-test-suite'))
from veripy.models import ComplianceTestSuite import cga_generation class CryptographicallyGeneratedAddresses(ComplianceTestSuite): """ Cryptographically Generated Addresses (CGA) CGA is a method for binding a public signature key to an IPv6 address in the Secure Neighbor Discovery (SEND) protocol by generating the interface identifier as a cryptographic one-way hash function of a public key and auxiliary parameters. This is a limited test suite, that verifies the UUT's ability to generate an address using CGA. @private Source: RFC 3972 Author: MWR """ TestCase_001 = cga_generation.VerifyCGAGenerationTestCase ComplianceTestSuite.register('cryptographically-generated-addresses', CryptographicallyGeneratedAddresses)
from veripy.models.decorators import must, should import deprecation_of_rh0 class DeprecationOfRH0Specification(ComplianceTestSuite): """ Deprecation of Type 0 Routing Headers in IPv6 RFC2460 defines an IPv6 extension header called "Routing Header", identified by a Next Header value of 43 in the immediately preceding header. A particular Routing Header subtype denoted as "Type 0" is also defined. This header allows a packet to be constructed such that it will oscillate between two RH0-processing hosts or routers many times. Allowing a stream of packets from an attacker to be amplified along the path between two remote routers, which could be used to cause congestion and act as a denial-of-service mechanism. @private Author: MWR Source: RFC5095 """ TestCase_001 = deprecation_of_rh0.RH0WithSegmentsLeftEqualToZeroToRUTTestCase TestCase_002 = deprecation_of_rh0.RH0WithSegmentsLeftEqualToZeroToTN4TestCase TestCase_003 = deprecation_of_rh0.RH0WithSegmentsLeftGreaterThanZeroToRUTTestCase TestCase_004 = deprecation_of_rh0.RH0WithSegmentsLeftGreaterThanZeroToTN4TestCase ComplianceTestSuite.register('deprecation-of-rh0', DeprecationOfRH0Specification)
PMTU. These tests are designed to verify the readiness of an IPv6 implementation vis-a-vis the Path MTU Discovery IPv6 specification. @private Author: MWR Source: IPv6 Ready Phase-1/Phase-2 Test Specification Core Protocols (Section 4) """ TestCase_001 = confirm_ping.ICMPv6EchoRequest64OctetsTestCase TestCase_002 = confirm_ping.ICMPv6EchoRequest1280OctetsTestCase TestCase_003 = confirm_ping.ICMPv6EchoRequest1500OctetsTestCase TestCase_004 = stored_pmtu.StoredPMTUTestCase TestCase_005 = non_zero_icmpv6_code.NonZeroICMPv6CodeTestCase TestCase_006 = reduce_pmtu_on_link.ReducePMTUOnLinkLinkLocalTestCase TestCase_007 = reduce_pmtu_on_link.ReducePMTUOnLinkGlobalTestCase TestCase_008 = reduce_pmtu_off_link.ReducePMTUOffLinkTestCase TestCase_009 = receiving_mtu_below_ipv6_minimum.MTUEqualTo56TestCase TestCase_010 = receiving_mtu_below_ipv6_minimum.MTUEqualTo1279TestCase TestCase_011 = increase_estimate.MTUIncreaseTestCase TestCase_012 = increase_estimate.MTUEqualTo0x1ffffffTestCase # TestCase_013 for hosts only (router_advertisement_with_mtu_option.RouterAdvertisementWithMTUOptionTestCase) TestCase_014 = checking_for_increase_in_pmtu.CheckingForIncreaseInPMTUTestCase # TestCase_015 = multicast_destination_one_router.MulticastDestinationOneRouterTestCase # TestCase_016 = multicast_destination_two_routers.MulticastDestinationTwoRoutersTestCase ComplianceTestSuite.register('pmtu-discovery-end-node', PathMTUDiscoveryEndNode) ComplianceTestSuite.register('pmtu-discovery-intermediate-node', PathMTUDiscoveryIntermediateNode)
#TestCase_308-316 for hosts only (redirected_on_link_invalid) #TestCase_317-320 for hosts only (redirected_to_alternate_router_valid) #TestCase_321-322 for hosts only (redirected_to_alternate_router_suspicious) #TestCase_323-331 for hosts only (redirected_to_alternate_router_invalid) #TestCase_332 for hosts only (redirected_twice) #TestCase_333 for hosts only (invalid_option) #TestCase_336 no_destination_cache_entry #TestCase_337-340 neighbor_cache_updated_no_nce #TestCase_341-344 neighbor_cache_updated_state_incomplete #TestCase_345-350 neighbor_cache_updated_state_reachable #TestCase_351-355 neighbor_cache_updated_state_stale #TestCase_356-360 neighbor_cache_updated_state_probe #TestCase_361-369 for hosts only (invalid_redirect_does_not_update_neighbor_cache) # TestCase_370 = redirect_transmit.SendRedirectTestCase # TestCase_371 = redirect_transmit.SendRedirectToAlternateRouterTestCase # TestCase_372 = redirect_transmit.SourceNotNeighborTestCase # TestCase_373 = redirect_transmit.DestinationMulticastTestCase # TestCase_374 = redirect_receive.RedirectTestCase ComplianceTestSuite.register('neighbor-discovery-end-node', NeighborDiscoverySpecification) ComplianceTestSuite.register('neighbor-discovery-intermediate-node', NeighborDiscoveryIntermediateNodeSpecification) ComplianceTestSuite.register('neighbor-discovery-end-node-redirect', NeighborDiscoveryRedirectFunctionSpecification) ComplianceTestSuite.register( 'neighbor-discovery-intermediate-node-intermediate', NeighborDiscoveryRedirectFunctionIntermediateNodeSpecification)
intermediate node exerts explicit routing control by specifying particular forwarding paths for selected packets. This control is achieved by prepending IPv6 headers to each of the selected original packets. These prepended headers identify the forwarding paths. These tests are designed to verify the readiness of an IPv6 implementation vis-a-vis the Generic Packet Tunneling IPv6 specification, with a 4in6 tunnel implementation. @private Author: MWR Source: RFC2473 """ TestCase_001 = tn_4in6.encapsulation.TTLDecrementedTestCase TestCase_002 = tn_4in6.encapsulation.EntryPointAddressTestCase TestCase_003 = tn_4in6.encapsulation.EndPointAddressTestCase TestCase_004 = tn_4in6.packet_processing.EncapsulatingHopLimitDecrementedWithIPv4EncapsulatedTestCase TestCase_005 = tn_4in6.decapsulation.AllEncapsulatedOptionsRemovedIPv4TestCase TestCase_006 = tn_4in6.packet_processing.HopLimitExceededWithinTunnelTestCase TestCase_007 = tn_4in6.packet_processing.UnreachableNodeWithinTunnelIPv4TestCase TestCase_008 = tn_4in6.packet_processing.PacketTooBigWithinTunnelIPv4TestCase TestCase_009 = tn_4in6.post_processing.TTLExceededAfterTunnelTestCase TestCase_010 = tn_4in6.post_processing.UnreachableNodeAfterTunnelTestCase ComplianceTestSuite.register('generic-packet-tunneling-in-ipv6-on-6in6', GenericPacketTunnelingInIPv6On6In6) ComplianceTestSuite.register('generic-packet-tunneling-in-ipv6-on-4in6', GenericPacketTunnelingInIPv6On4In6)