Browse Source

net/udprelay{/endpoint}: move ServerEndpoint tests (#15949)

Commit 0841477 moved ServerEndpoint to an independent package. Move its
tests over as well.

Updates tailscale/corp#27502

Signed-off-by: Jordan Whited <[email protected]>
Jordan Whited 9 months ago
parent
commit
d6dd74fe0e
2 changed files with 110 additions and 97 deletions
  1. 110 0
      net/udprelay/endpoint/endpoint_test.go
  2. 0 97
      net/udprelay/server_test.go

+ 110 - 0
net/udprelay/endpoint/endpoint_test.go

@@ -0,0 +1,110 @@
+// Copyright (c) Tailscale Inc & AUTHORS
+// SPDX-License-Identifier: BSD-3-Clause
+
+package endpoint
+
+import (
+	"encoding/json"
+	"math"
+	"net/netip"
+	"testing"
+	"time"
+
+	"github.com/google/go-cmp/cmp"
+	"github.com/google/go-cmp/cmp/cmpopts"
+	"tailscale.com/tstime"
+	"tailscale.com/types/key"
+)
+
+func TestServerEndpointJSONUnmarshal(t *testing.T) {
+	tests := []struct {
+		name    string
+		json    []byte
+		wantErr bool
+	}{
+		{
+			name:    "valid",
+			json:    []byte(`{"ServerDisco":"discokey:003cd7453e04a653eb0e7a18f206fc353180efadb2facfd05ebd6982a1392c7f","LamportID":18446744073709551615,"AddrPorts":["127.0.0.1:1","127.0.0.2:2"],"VNI":16777215,"BindLifetime":"30s","SteadyStateLifetime":"5m0s"}`),
+			wantErr: false,
+		},
+		{
+			name:    "invalid ServerDisco",
+			json:    []byte(`{"ServerDisco":"1","LamportID":18446744073709551615,"AddrPorts":["127.0.0.1:1","127.0.0.2:2"],"VNI":16777215,"BindLifetime":"30s","SteadyStateLifetime":"5m0s"}`),
+			wantErr: true,
+		},
+		{
+			name:    "invalid LamportID",
+			json:    []byte(`{"ServerDisco":"discokey:003cd7453e04a653eb0e7a18f206fc353180efadb2facfd05ebd6982a1392c7f","LamportID":1.1,"AddrPorts":["127.0.0.1:1","127.0.0.2:2"],"VNI":16777215,"BindLifetime":"30s","SteadyStateLifetime":"5m0s"}`),
+			wantErr: true,
+		},
+		{
+			name:    "invalid AddrPorts",
+			json:    []byte(`{"ServerDisco":"discokey:003cd7453e04a653eb0e7a18f206fc353180efadb2facfd05ebd6982a1392c7f","LamportID":18446744073709551615,"AddrPorts":["127.0.0.1.1:1","127.0.0.2:2"],"VNI":16777215,"BindLifetime":"30s","SteadyStateLifetime":"5m0s"}`),
+			wantErr: true,
+		},
+		{
+			name:    "invalid VNI",
+			json:    []byte(`{"ServerDisco":"discokey:003cd7453e04a653eb0e7a18f206fc353180efadb2facfd05ebd6982a1392c7f","LamportID":18446744073709551615,"AddrPorts":["127.0.0.1:1","127.0.0.2:2"],"VNI":18446744073709551615,"BindLifetime":"30s","SteadyStateLifetime":"5m0s"}`),
+			wantErr: true,
+		},
+		{
+			name:    "invalid BindLifetime",
+			json:    []byte(`{"ServerDisco":"discokey:003cd7453e04a653eb0e7a18f206fc353180efadb2facfd05ebd6982a1392c7f","LamportID":18446744073709551615,"AddrPorts":["127.0.0.1:1","127.0.0.2:2"],"VNI":16777215,"BindLifetime":"5","SteadyStateLifetime":"5m0s"}`),
+			wantErr: true,
+		},
+		{
+			name:    "invalid SteadyStateLifetime",
+			json:    []byte(`{"ServerDisco":"discokey:003cd7453e04a653eb0e7a18f206fc353180efadb2facfd05ebd6982a1392c7f","LamportID":18446744073709551615,"AddrPorts":["127.0.0.1:1","127.0.0.2:2"],"VNI":16777215,"BindLifetime":"30s","SteadyStateLifetime":"5"}`),
+			wantErr: true,
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			var out ServerEndpoint
+			err := json.Unmarshal(tt.json, &out)
+			if tt.wantErr != (err != nil) {
+				t.Fatalf("wantErr: %v (err == nil): %v", tt.wantErr, err == nil)
+			}
+			if tt.wantErr {
+				return
+			}
+		})
+	}
+}
+
+func TestServerEndpointJSONMarshal(t *testing.T) {
+	tests := []struct {
+		name           string
+		serverEndpoint ServerEndpoint
+	}{
+		{
+			name: "valid roundtrip",
+			serverEndpoint: ServerEndpoint{
+				ServerDisco:         key.NewDisco().Public(),
+				LamportID:           uint64(math.MaxUint64),
+				AddrPorts:           []netip.AddrPort{netip.MustParseAddrPort("127.0.0.1:1"), netip.MustParseAddrPort("127.0.0.2:2")},
+				VNI:                 1<<24 - 1,
+				BindLifetime:        tstime.GoDuration{Duration: time.Second * 30},
+				SteadyStateLifetime: tstime.GoDuration{Duration: time.Minute * 5},
+			},
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			b, err := json.Marshal(&tt.serverEndpoint)
+			if err != nil {
+				t.Fatal(err)
+			}
+			var got ServerEndpoint
+			err = json.Unmarshal(b, &got)
+			if err != nil {
+				t.Fatal(err)
+			}
+			if diff := cmp.Diff(got, tt.serverEndpoint, cmpopts.EquateComparable(netip.AddrPort{}, key.DiscoPublic{})); diff != "" {
+				t.Fatalf("ServerEndpoint unequal (-got +want)\n%s", diff)
+			}
+		})
+	}
+}

+ 0 - 97
net/udprelay/server_test.go

@@ -5,8 +5,6 @@ package udprelay
 
 import (
 	"bytes"
-	"encoding/json"
-	"math"
 	"net"
 	"net/netip"
 	"testing"
@@ -17,8 +15,6 @@ import (
 	"go4.org/mem"
 	"tailscale.com/disco"
 	"tailscale.com/net/packet"
-	"tailscale.com/net/udprelay/endpoint"
-	"tailscale.com/tstime"
 	"tailscale.com/types/key"
 )
 
@@ -214,96 +210,3 @@ func TestServer(t *testing.T) {
 		t.Fatal("unexpected msg B->A")
 	}
 }
-
-func TestServerEndpointJSONUnmarshal(t *testing.T) {
-	tests := []struct {
-		name    string
-		json    []byte
-		wantErr bool
-	}{
-		{
-			name:    "valid",
-			json:    []byte(`{"ServerDisco":"discokey:003cd7453e04a653eb0e7a18f206fc353180efadb2facfd05ebd6982a1392c7f","LamportID":18446744073709551615,"AddrPorts":["127.0.0.1:1","127.0.0.2:2"],"VNI":16777215,"BindLifetime":"30s","SteadyStateLifetime":"5m0s"}`),
-			wantErr: false,
-		},
-		{
-			name:    "invalid ServerDisco",
-			json:    []byte(`{"ServerDisco":"1","LamportID":18446744073709551615,"AddrPorts":["127.0.0.1:1","127.0.0.2:2"],"VNI":16777215,"BindLifetime":"30s","SteadyStateLifetime":"5m0s"}`),
-			wantErr: true,
-		},
-		{
-			name:    "invalid LamportID",
-			json:    []byte(`{"ServerDisco":"discokey:003cd7453e04a653eb0e7a18f206fc353180efadb2facfd05ebd6982a1392c7f","LamportID":1.1,"AddrPorts":["127.0.0.1:1","127.0.0.2:2"],"VNI":16777215,"BindLifetime":"30s","SteadyStateLifetime":"5m0s"}`),
-			wantErr: true,
-		},
-		{
-			name:    "invalid AddrPorts",
-			json:    []byte(`{"ServerDisco":"discokey:003cd7453e04a653eb0e7a18f206fc353180efadb2facfd05ebd6982a1392c7f","LamportID":18446744073709551615,"AddrPorts":["127.0.0.1.1:1","127.0.0.2:2"],"VNI":16777215,"BindLifetime":"30s","SteadyStateLifetime":"5m0s"}`),
-			wantErr: true,
-		},
-		{
-			name:    "invalid VNI",
-			json:    []byte(`{"ServerDisco":"discokey:003cd7453e04a653eb0e7a18f206fc353180efadb2facfd05ebd6982a1392c7f","LamportID":18446744073709551615,"AddrPorts":["127.0.0.1:1","127.0.0.2:2"],"VNI":18446744073709551615,"BindLifetime":"30s","SteadyStateLifetime":"5m0s"}`),
-			wantErr: true,
-		},
-		{
-			name:    "invalid BindLifetime",
-			json:    []byte(`{"ServerDisco":"discokey:003cd7453e04a653eb0e7a18f206fc353180efadb2facfd05ebd6982a1392c7f","LamportID":18446744073709551615,"AddrPorts":["127.0.0.1:1","127.0.0.2:2"],"VNI":16777215,"BindLifetime":"5","SteadyStateLifetime":"5m0s"}`),
-			wantErr: true,
-		},
-		{
-			name:    "invalid SteadyStateLifetime",
-			json:    []byte(`{"ServerDisco":"discokey:003cd7453e04a653eb0e7a18f206fc353180efadb2facfd05ebd6982a1392c7f","LamportID":18446744073709551615,"AddrPorts":["127.0.0.1:1","127.0.0.2:2"],"VNI":16777215,"BindLifetime":"30s","SteadyStateLifetime":"5"}`),
-			wantErr: true,
-		},
-	}
-
-	for _, tt := range tests {
-		t.Run(tt.name, func(t *testing.T) {
-			var out endpoint.ServerEndpoint
-			err := json.Unmarshal(tt.json, &out)
-			if tt.wantErr != (err != nil) {
-				t.Fatalf("wantErr: %v (err == nil): %v", tt.wantErr, err == nil)
-			}
-			if tt.wantErr {
-				return
-			}
-		})
-	}
-}
-
-func TestServerEndpointJSONMarshal(t *testing.T) {
-	tests := []struct {
-		name           string
-		serverEndpoint endpoint.ServerEndpoint
-	}{
-		{
-			name: "valid roundtrip",
-			serverEndpoint: endpoint.ServerEndpoint{
-				ServerDisco:         key.NewDisco().Public(),
-				LamportID:           uint64(math.MaxUint64),
-				AddrPorts:           []netip.AddrPort{netip.MustParseAddrPort("127.0.0.1:1"), netip.MustParseAddrPort("127.0.0.2:2")},
-				VNI:                 1<<24 - 1,
-				BindLifetime:        tstime.GoDuration{Duration: defaultBindLifetime},
-				SteadyStateLifetime: tstime.GoDuration{Duration: defaultSteadyStateLifetime},
-			},
-		},
-	}
-
-	for _, tt := range tests {
-		t.Run(tt.name, func(t *testing.T) {
-			b, err := json.Marshal(&tt.serverEndpoint)
-			if err != nil {
-				t.Fatal(err)
-			}
-			var got endpoint.ServerEndpoint
-			err = json.Unmarshal(b, &got)
-			if err != nil {
-				t.Fatal(err)
-			}
-			if diff := cmp.Diff(got, tt.serverEndpoint, cmpopts.EquateComparable(netip.AddrPort{}, key.DiscoPublic{})); diff != "" {
-				t.Fatalf("ServerEndpoint unequal (-got +want)\n%s", diff)
-			}
-		})
-	}
-}