...

Source file src/github.com/Microsoft/hcsshim/internal/ncproxy/store/store_test.go

Documentation: github.com/Microsoft/hcsshim/internal/ncproxy/store

     1  package store
     2  
     3  import (
     4  	"context"
     5  	"path/filepath"
     6  	"testing"
     7  
     8  	ncproxynetworking "github.com/Microsoft/hcsshim/internal/ncproxy/networking"
     9  	bolt "go.etcd.io/bbolt"
    10  )
    11  
    12  func TestComputeAgentStore(t *testing.T) {
    13  	ctx := context.Background()
    14  	tempDir := t.TempDir()
    15  
    16  	db, err := bolt.Open(filepath.Join(tempDir, "networkproxy.db.test"), 0600, nil)
    17  	if err != nil {
    18  		t.Fatal(err)
    19  	}
    20  	defer db.Close()
    21  
    22  	store := NewComputeAgentStore(db)
    23  	containerID := "fake-container-id"
    24  	address := "123412341234"
    25  
    26  	if err := store.UpdateComputeAgent(ctx, containerID, address); err != nil {
    27  		t.Fatal(err)
    28  	}
    29  
    30  	actual, err := store.GetComputeAgent(ctx, containerID)
    31  	if err != nil {
    32  		t.Fatal(err)
    33  	}
    34  
    35  	if address != actual {
    36  		t.Fatalf("compute agent addresses are not equal, expected %v but got %v", address, actual)
    37  	}
    38  
    39  	if err := store.DeleteComputeAgent(ctx, containerID); err != nil {
    40  		t.Fatal(err)
    41  	}
    42  
    43  	value, err := store.GetComputeAgent(ctx, containerID)
    44  	if err == nil {
    45  		t.Fatalf("expected an error, instead found value %s", value)
    46  	}
    47  }
    48  
    49  func TestComputeAgentStore_GetComputeAgents(t *testing.T) {
    50  	ctx := context.Background()
    51  	tempDir := t.TempDir()
    52  
    53  	db, err := bolt.Open(filepath.Join(tempDir, "networkproxy.db.test"), 0600, nil)
    54  	if err != nil {
    55  		t.Fatal(err)
    56  	}
    57  	defer db.Close()
    58  
    59  	store := NewComputeAgentStore(db)
    60  
    61  	containerIDs := []string{"fake-container-id", "fake-container-id-2"}
    62  	addresses := []string{"123412341234", "234523452345"}
    63  
    64  	target := make(map[string]string)
    65  	for i := 0; i < len(containerIDs); i++ {
    66  		target[containerIDs[i]] = addresses[i]
    67  		if err := store.UpdateComputeAgent(ctx, containerIDs[i], addresses[i]); err != nil {
    68  			t.Fatal(err)
    69  		}
    70  	}
    71  
    72  	actual, err := store.GetComputeAgents(ctx)
    73  	if err != nil {
    74  		t.Fatal(err)
    75  	}
    76  
    77  	for k, v := range actual {
    78  		if target[k] != v {
    79  			t.Fatalf("expected to get %s for key %s, instead got %s", target[k], k, v)
    80  		}
    81  	}
    82  }
    83  
    84  func TestEndpointStore(t *testing.T) {
    85  	ctx := context.Background()
    86  	tempDir := t.TempDir()
    87  
    88  	db, err := bolt.Open(filepath.Join(tempDir, "networkproxy.db.test"), 0600, nil)
    89  	if err != nil {
    90  		t.Fatal(err)
    91  	}
    92  	defer db.Close()
    93  
    94  	store := NewNetworkingStore(db)
    95  	endpointName := "test-endpoint-name"
    96  	namespaceID := "test-namespace-id"
    97  
    98  	endpoint := &ncproxynetworking.Endpoint{
    99  		EndpointName: endpointName,
   100  		NamespaceID:  namespaceID,
   101  	}
   102  
   103  	if err := store.CreatEndpoint(ctx, endpoint); err != nil {
   104  		t.Fatal(err)
   105  	}
   106  
   107  	actual, err := store.GetEndpointByName(ctx, endpointName)
   108  	if err != nil {
   109  		t.Fatal(err)
   110  	}
   111  
   112  	if actual.EndpointName != endpointName {
   113  		t.Fatalf("endpoint name is not equal, expected %v but got %v", endpointName, actual.EndpointName)
   114  	}
   115  
   116  	if actual.NamespaceID != namespaceID {
   117  		t.Fatalf("endpoint namespace id is not equal, expected %v but got %v", namespaceID, actual.NamespaceID)
   118  	}
   119  
   120  	if err := store.DeleteEndpoint(ctx, endpointName); err != nil {
   121  		t.Fatal(err)
   122  	}
   123  
   124  	actual, err = store.GetEndpointByName(ctx, endpointName)
   125  	if err == nil {
   126  		t.Fatalf("expected an error, instead found endpoint %v", actual)
   127  	}
   128  }
   129  
   130  func TestEndpointStore_GetAll(t *testing.T) {
   131  	ctx := context.Background()
   132  	tempDir := t.TempDir()
   133  
   134  	db, err := bolt.Open(filepath.Join(tempDir, "networkproxy.db.test"), 0600, nil)
   135  	if err != nil {
   136  		t.Fatal(err)
   137  	}
   138  	defer db.Close()
   139  
   140  	store := NewNetworkingStore(db)
   141  
   142  	endpoints := []*ncproxynetworking.Endpoint{
   143  		{
   144  			EndpointName: "endpoint-name-1",
   145  		},
   146  		{
   147  			EndpointName: "endpoint-name-2",
   148  		},
   149  	}
   150  
   151  	target := make(map[string]*ncproxynetworking.Endpoint)
   152  	for i := 0; i < len(endpoints); i++ {
   153  		target[endpoints[i].EndpointName] = endpoints[i]
   154  		if err := store.CreatEndpoint(ctx, endpoints[i]); err != nil {
   155  			t.Fatal(err)
   156  		}
   157  	}
   158  
   159  	actual, err := store.ListEndpoints(ctx)
   160  	if err != nil {
   161  		t.Fatal(err)
   162  	}
   163  
   164  	for _, e := range actual {
   165  		endpt, ok := target[e.EndpointName]
   166  		if !ok {
   167  			t.Fatalf("unexpected endpoint with name %v found", e.EndpointName)
   168  		}
   169  		if endpt.EndpointName != e.EndpointName {
   170  			t.Fatalf("expected found endpoint to have name %v, instead found %v", endpt.EndpointName, e.EndpointName)
   171  		}
   172  	}
   173  }
   174  
   175  func TestNetworkStore(t *testing.T) {
   176  	ctx := context.Background()
   177  	tempDir := t.TempDir()
   178  
   179  	db, err := bolt.Open(filepath.Join(tempDir, "networkproxy.db.test"), 0600, nil)
   180  	if err != nil {
   181  		t.Fatal(err)
   182  	}
   183  	defer db.Close()
   184  
   185  	store := NewNetworkingStore(db)
   186  	networkName := "test-network-name"
   187  
   188  	network := &ncproxynetworking.Network{
   189  		NetworkName: networkName,
   190  	}
   191  
   192  	if err := store.CreateNetwork(ctx, network); err != nil {
   193  		t.Fatal(err)
   194  	}
   195  
   196  	actual, err := store.GetNetworkByName(ctx, networkName)
   197  	if err != nil {
   198  		t.Fatal(err)
   199  	}
   200  
   201  	if actual.NetworkName != networkName {
   202  		t.Fatalf("network name is not equal, expected %v but got %v", networkName, actual.NetworkName)
   203  	}
   204  
   205  	if err := store.DeleteNetwork(ctx, networkName); err != nil {
   206  		t.Fatal(err)
   207  	}
   208  
   209  	actual, err = store.GetNetworkByName(ctx, networkName)
   210  	if err == nil {
   211  		t.Fatalf("expected an error, instead found network %v", actual)
   212  	}
   213  }
   214  
   215  func TestNetworkStore_GetAll(t *testing.T) {
   216  	ctx := context.Background()
   217  	tempDir := t.TempDir()
   218  
   219  	db, err := bolt.Open(filepath.Join(tempDir, "networkproxy.db.test"), 0600, nil)
   220  	if err != nil {
   221  		t.Fatal(err)
   222  	}
   223  	defer db.Close()
   224  
   225  	store := NewNetworkingStore(db)
   226  
   227  	networks := []*ncproxynetworking.Network{
   228  		{
   229  			NetworkName: "network-name-1",
   230  		},
   231  		{
   232  			NetworkName: "network-name-2",
   233  		},
   234  	}
   235  
   236  	target := make(map[string]*ncproxynetworking.Network)
   237  	for i := 0; i < len(networks); i++ {
   238  		target[networks[i].NetworkName] = networks[i]
   239  		if err := store.CreateNetwork(ctx, networks[i]); err != nil {
   240  			t.Fatal(err)
   241  		}
   242  	}
   243  
   244  	actual, err := store.ListNetworks(ctx)
   245  	if err != nil {
   246  		t.Fatal(err)
   247  	}
   248  
   249  	for _, n := range actual {
   250  		network, ok := target[n.NetworkName]
   251  		if !ok {
   252  			t.Fatalf("unexpected network with name %v found", n.NetworkName)
   253  		}
   254  		if network.NetworkName != n.NetworkName {
   255  			t.Fatalf("expected found network to have name %v, instead found %v", network.NetworkName, n.NetworkName)
   256  		}
   257  	}
   258  }
   259  

View as plain text