...

Source file src/github.com/Microsoft/hcsshim/hcn/hcnsupport_test.go

Documentation: github.com/Microsoft/hcsshim/hcn

     1  //go:build windows && integration
     2  // +build windows,integration
     3  
     4  package hcn
     5  
     6  import (
     7  	"encoding/json"
     8  	"fmt"
     9  	"testing"
    10  )
    11  
    12  func TestSupportedFeatures(t *testing.T) {
    13  	supportedFeatures := GetSupportedFeatures()
    14  	jsonString, err := json.Marshal(supportedFeatures)
    15  	if err != nil {
    16  		t.Fatal(err)
    17  	}
    18  	fmt.Printf("Supported Features:\n%s \n", jsonString)
    19  }
    20  
    21  func TestV2ApiSupport(t *testing.T) {
    22  	supportedFeatures := GetSupportedFeatures()
    23  	err := V2ApiSupported()
    24  	if supportedFeatures.Api.V2 && err != nil {
    25  		t.Fatal(err)
    26  	}
    27  	if !supportedFeatures.Api.V2 && err == nil {
    28  		t.Fatal(err)
    29  	}
    30  }
    31  
    32  func TestRemoteSubnetSupport(t *testing.T) {
    33  	supportedFeatures := GetSupportedFeatures()
    34  	err := RemoteSubnetSupported()
    35  	if supportedFeatures.RemoteSubnet && err != nil {
    36  		t.Fatal(err)
    37  	}
    38  	if !supportedFeatures.RemoteSubnet && err == nil {
    39  		t.Fatal(err)
    40  	}
    41  }
    42  
    43  func TestHostRouteSupport(t *testing.T) {
    44  	supportedFeatures := GetSupportedFeatures()
    45  	err := HostRouteSupported()
    46  	if supportedFeatures.HostRoute && err != nil {
    47  		t.Fatal(err)
    48  	}
    49  	if !supportedFeatures.HostRoute && err == nil {
    50  		t.Fatal(err)
    51  	}
    52  }
    53  
    54  func TestDSRSupport(t *testing.T) {
    55  	supportedFeatures := GetSupportedFeatures()
    56  	err := DSRSupported()
    57  	if supportedFeatures.DSR && err != nil {
    58  		t.Fatal(err)
    59  	}
    60  	if !supportedFeatures.DSR && err == nil {
    61  		t.Fatal(err)
    62  	}
    63  }
    64  
    65  func TestSlash32EndpointPrefixesSupport(t *testing.T) {
    66  	supportedFeatures := GetSupportedFeatures()
    67  	err := Slash32EndpointPrefixesSupported()
    68  	if supportedFeatures.Slash32EndpointPrefixes && err != nil {
    69  		t.Fatal(err)
    70  	}
    71  	if !supportedFeatures.Slash32EndpointPrefixes && err == nil {
    72  		t.Fatal(err)
    73  	}
    74  }
    75  
    76  func TestAclSupportForProtocol252Support(t *testing.T) {
    77  	supportedFeatures := GetSupportedFeatures()
    78  	err := AclSupportForProtocol252Supported()
    79  	if supportedFeatures.AclSupportForProtocol252 && err != nil {
    80  		t.Fatal(err)
    81  	}
    82  	if !supportedFeatures.AclSupportForProtocol252 && err == nil {
    83  		t.Fatal(err)
    84  	}
    85  }
    86  
    87  func TestSessionAffinitySupport(t *testing.T) {
    88  	supportedFeatures := GetSupportedFeatures()
    89  	err := SessionAffinitySupported()
    90  	if supportedFeatures.SessionAffinity && err != nil {
    91  		t.Fatal(err)
    92  	}
    93  	if !supportedFeatures.SessionAffinity && err == nil {
    94  		t.Fatal(err)
    95  	}
    96  }
    97  
    98  func TestIPv6DualStackSupport(t *testing.T) {
    99  	supportedFeatures := GetSupportedFeatures()
   100  	err := IPv6DualStackSupported()
   101  	if supportedFeatures.IPv6DualStack && err != nil {
   102  		t.Fatal(err)
   103  	}
   104  	if !supportedFeatures.IPv6DualStack && err == nil {
   105  		t.Fatal(err)
   106  	}
   107  }
   108  
   109  func TestSetPolicySupport(t *testing.T) {
   110  	supportedFeatures := GetSupportedFeatures()
   111  	err := SetPolicySupported()
   112  	if supportedFeatures.SetPolicy && err != nil {
   113  		t.Fatal(err)
   114  	}
   115  	if !supportedFeatures.SetPolicy && err == nil {
   116  		t.Fatal(err)
   117  	}
   118  }
   119  
   120  func TestNestedIpSetSupport(t *testing.T) {
   121  	supportedFeatures := GetSupportedFeatures()
   122  	err := NestedIpSetSupported()
   123  	if supportedFeatures.NestedIpSet && err != nil {
   124  		t.Fatal(err)
   125  	}
   126  	if !supportedFeatures.NestedIpSet && err == nil {
   127  		t.Fatal(err)
   128  	}
   129  }
   130  
   131  func TestNetworkACLPolicySupport(t *testing.T) {
   132  	supportedFeatures := GetSupportedFeatures()
   133  	err := NetworkACLPolicySupported()
   134  	if supportedFeatures.NetworkACL && err != nil {
   135  		t.Fatal(err)
   136  	}
   137  	if !supportedFeatures.NetworkACL && err == nil {
   138  		t.Fatal(err)
   139  	}
   140  }
   141  
   142  func TestVxlanPortSupport(t *testing.T) {
   143  	supportedFeatures := GetSupportedFeatures()
   144  	err := VxlanPortSupported()
   145  	if supportedFeatures.VxlanPort && err != nil {
   146  		t.Fatal(err)
   147  	}
   148  	if !supportedFeatures.VxlanPort && err == nil {
   149  		t.Fatal(err)
   150  	}
   151  }
   152  
   153  func TestL4ProxyPolicySupport(t *testing.T) {
   154  	supportedFeatures := GetSupportedFeatures()
   155  	err := L4proxyPolicySupported()
   156  	if supportedFeatures.L4Proxy && err != nil {
   157  		t.Fatal(err)
   158  	}
   159  	if !supportedFeatures.L4Proxy && err == nil {
   160  		t.Fatal(err)
   161  	}
   162  }
   163  
   164  func TestL4WfpProxyPolicySupport(t *testing.T) {
   165  	supportedFeatures := GetSupportedFeatures()
   166  	err := L4WfpProxyPolicySupported()
   167  	if supportedFeatures.L4WfpProxy && err != nil {
   168  		t.Fatal(err)
   169  	}
   170  	if !supportedFeatures.L4WfpProxy && err == nil {
   171  		t.Fatal(err)
   172  	}
   173  }
   174  
   175  func TestTierAclPolicySupport(t *testing.T) {
   176  	supportedFeatures := GetSupportedFeatures()
   177  	err := TierAclPolicySupported()
   178  	if supportedFeatures.TierAcl && err != nil {
   179  		t.Fatal(err)
   180  	}
   181  	if !supportedFeatures.TierAcl && err == nil {
   182  		t.Fatal(err)
   183  	}
   184  }
   185  
   186  func TestIsFeatureSupported(t *testing.T) {
   187  	// HNSVersion1803 testing (single range tests)
   188  	if isFeatureSupported(Version{Major: 0, Minor: 0}, HNSVersion1803) {
   189  		t.Fatalf("HNSVersion1803 should NOT be supported on HNS version 0.0")
   190  	}
   191  
   192  	if isFeatureSupported(Version{Major: 7, Minor: 0}, HNSVersion1803) {
   193  		t.Fatalf("HNSVersion1803 should NOT be supported on HNS version 7.1")
   194  	}
   195  
   196  	if isFeatureSupported(Version{Major: 7, Minor: 1}, HNSVersion1803) {
   197  		t.Fatalf("HNSVersion1803 should NOT be supported on HNS version 7.1")
   198  	}
   199  
   200  	if !isFeatureSupported(Version{Major: 7, Minor: 2}, HNSVersion1803) {
   201  		t.Fatalf("HNSVersion1803 SHOULD be supported on HNS version 7.2")
   202  	}
   203  
   204  	if !isFeatureSupported(Version{Major: 7, Minor: 3}, HNSVersion1803) {
   205  		t.Fatalf("HNSVersion1803 SHOULD be supported on HNS version 7.3")
   206  	}
   207  
   208  	if !isFeatureSupported(Version{Major: 8, Minor: 0}, HNSVersion1803) {
   209  		t.Fatalf("HNSVersion1803 SHOULD be supported on HNS version 8.0")
   210  	}
   211  
   212  	if !isFeatureSupported(Version{Major: 8, Minor: 2}, HNSVersion1803) {
   213  		t.Fatalf("HNSVersion1803 SHOULD be supported on HNS version 8.2")
   214  	}
   215  
   216  	if !isFeatureSupported(Version{Major: 8, Minor: 3}, HNSVersion1803) {
   217  		t.Fatalf("HNSVersion1803 SHOULD be supported on HNS version 8.3")
   218  	}
   219  
   220  	if !isFeatureSupported(Version{Major: 255, Minor: 2}, HNSVersion1803) {
   221  		t.Fatalf("HNSVersion1803 SHOULD be supported on HNS version 255.2")
   222  	}
   223  
   224  	if !isFeatureSupported(Version{Major: 255, Minor: 0}, HNSVersion1803) {
   225  		t.Fatalf("HNSVersion1803 SHOULD be supported on HNS version 255.0")
   226  	}
   227  
   228  	if !isFeatureSupported(Version{Major: 255, Minor: 6}, HNSVersion1803) {
   229  		t.Fatalf("HNSVersion1803 SHOULD be supported on HNS version 255.6")
   230  	}
   231  
   232  	// Slash 32 endpoint prefix support testing (multi-ranges tests)
   233  	if isFeatureSupported(Version{Major: 8, Minor: 0}, Slash32EndpointPrefixesVersion) {
   234  		t.Fatalf("Slash32EndpointPrefixesVersion should NOT be supported on HNS version 8.0")
   235  	}
   236  
   237  	if isFeatureSupported(Version{Major: 8, Minor: 2}, Slash32EndpointPrefixesVersion) {
   238  		t.Fatalf("Slash32EndpointPrefixesVersion should NOT be supported on HNS version 8.2")
   239  	}
   240  
   241  	if isFeatureSupported(Version{Major: 8, Minor: 3}, Slash32EndpointPrefixesVersion) {
   242  		t.Fatalf("Slash32EndpointPrefixesVersion should NOT be supported on HNS version 8.3")
   243  	}
   244  
   245  	if isFeatureSupported(Version{Major: 8, Minor: 4}, Slash32EndpointPrefixesVersion) {
   246  		t.Fatalf("Slash32EndpointPrefixesVersion should NOT be supported on HNS version 8.4")
   247  	}
   248  
   249  	if isFeatureSupported(Version{Major: 8, Minor: 5}, Slash32EndpointPrefixesVersion) {
   250  		t.Fatalf("Slash32EndpointPrefixesVersion should NOT be supported on HNS version 8.5")
   251  	}
   252  
   253  	if isFeatureSupported(Version{Major: 9, Minor: 0}, Slash32EndpointPrefixesVersion) {
   254  		t.Fatalf("Slash32EndpointPrefixesVersion should NOT be supported on HNS version 9.0")
   255  	}
   256  
   257  	if isFeatureSupported(Version{Major: 9, Minor: 2}, Slash32EndpointPrefixesVersion) {
   258  		t.Fatalf("Slash32EndpointPrefixesVersion should NOT be supported on HNS version 9.2")
   259  	}
   260  
   261  	//// Beginning of supported range
   262  	if !isFeatureSupported(Version{Major: 9, Minor: 3}, Slash32EndpointPrefixesVersion) {
   263  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 9.3")
   264  	}
   265  
   266  	if !isFeatureSupported(Version{Major: 9, Minor: 4}, Slash32EndpointPrefixesVersion) {
   267  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 9.4")
   268  	}
   269  
   270  	if !isFeatureSupported(Version{Major: 9, Minor: 5}, Slash32EndpointPrefixesVersion) {
   271  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 9.5")
   272  	}
   273  
   274  	if !isFeatureSupported(Version{Major: 9, Minor: 9}, Slash32EndpointPrefixesVersion) {
   275  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 9.9")
   276  	}
   277  
   278  	if !isFeatureSupported(Version{Major: 9, Minor: 372}, Slash32EndpointPrefixesVersion) {
   279  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 9.372")
   280  	}
   281  	//// End of supported range
   282  
   283  	if isFeatureSupported(Version{Major: 10, Minor: 0}, Slash32EndpointPrefixesVersion) {
   284  		t.Fatalf("Slash32EndpointPrefixesVersion should NOT be supported on HNS version 10.0")
   285  	}
   286  
   287  	if isFeatureSupported(Version{Major: 10, Minor: 1}, Slash32EndpointPrefixesVersion) {
   288  		t.Fatalf("Slash32EndpointPrefixesVersion should NOT be supported on HNS version 10.1")
   289  	}
   290  
   291  	if isFeatureSupported(Version{Major: 10, Minor: 2}, Slash32EndpointPrefixesVersion) {
   292  		t.Fatalf("Slash32EndpointPrefixesVersion should NOT be supported on HNS version 10.2")
   293  	}
   294  
   295  	if isFeatureSupported(Version{Major: 10, Minor: 3}, Slash32EndpointPrefixesVersion) {
   296  		t.Fatalf("Slash32EndpointPrefixesVersion should NOT be supported on HNS version 10.3")
   297  	}
   298  
   299  	//// Beginning of supported range (final range, no end)
   300  	if !isFeatureSupported(Version{Major: 10, Minor: 4}, Slash32EndpointPrefixesVersion) {
   301  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 10.4")
   302  	}
   303  
   304  	if !isFeatureSupported(Version{Major: 10, Minor: 5}, Slash32EndpointPrefixesVersion) {
   305  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 10.5")
   306  	}
   307  
   308  	if !isFeatureSupported(Version{Major: 10, Minor: 9}, Slash32EndpointPrefixesVersion) {
   309  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 10.9")
   310  	}
   311  
   312  	if !isFeatureSupported(Version{Major: 10, Minor: 410}, Slash32EndpointPrefixesVersion) {
   313  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 10.410")
   314  	}
   315  
   316  	if !isFeatureSupported(Version{Major: 11, Minor: 0}, Slash32EndpointPrefixesVersion) {
   317  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 11.0")
   318  	}
   319  
   320  	if !isFeatureSupported(Version{Major: 11, Minor: 1}, Slash32EndpointPrefixesVersion) {
   321  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 11.1")
   322  	}
   323  
   324  	if !isFeatureSupported(Version{Major: 11, Minor: 2}, Slash32EndpointPrefixesVersion) {
   325  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 11.2")
   326  	}
   327  
   328  	if !isFeatureSupported(Version{Major: 11, Minor: 3}, Slash32EndpointPrefixesVersion) {
   329  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 11.3")
   330  	}
   331  
   332  	if !isFeatureSupported(Version{Major: 11, Minor: 4}, Slash32EndpointPrefixesVersion) {
   333  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 11.4")
   334  	}
   335  
   336  	if !isFeatureSupported(Version{Major: 11, Minor: 5}, Slash32EndpointPrefixesVersion) {
   337  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 11.5")
   338  	}
   339  
   340  	if !isFeatureSupported(Version{Major: 11, Minor: 9}, Slash32EndpointPrefixesVersion) {
   341  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 11.9")
   342  	}
   343  
   344  	if !isFeatureSupported(Version{Major: 255, Minor: 2}, Slash32EndpointPrefixesVersion) {
   345  		t.Fatalf("Slash32EndpointPrefixesVersion SHOULD be supported on HNS version 255.2")
   346  	}
   347  }
   348  

View as plain text