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_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)
Beispiel #9
0
    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)
Beispiel #10
0
    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
Beispiel #11
0
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])
Beispiel #13
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)
Beispiel #14
0
    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()
Beispiel #16
0
    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)
Beispiel #17
0
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)
Beispiel #18
0
    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)
Beispiel #19
0
    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)
Beispiel #20
0
    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])
Beispiel #21
0
    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)
Beispiel #22
0
 def tearDown(self):
     ComplianceTestSuite.clear()
Beispiel #23
0
 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)
Beispiel #24
0
    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)
Beispiel #25
0
    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)
Beispiel #26
0
    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)
Beispiel #27
0
    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)
Beispiel #28
0
    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)
Beispiel #29
0
 def tearDown(self):
     ComplianceTestSuite.clear()
Beispiel #30
0
    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)
Beispiel #31
0
    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)
Beispiel #32
0
    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)
Beispiel #33
0
 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)
    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'))
Beispiel #35
0
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)
Beispiel #36
0
    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'))
Beispiel #37
0
    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)
Beispiel #38
0
 def setUp(self):
     ComplianceTestSuite.clear()
Beispiel #39
0
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)
Beispiel #40
0
    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)
Beispiel #41
0
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)
Beispiel #42
0
    #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)
Beispiel #43
0
    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)
Beispiel #44
0
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)