...

Source file src/github.com/Microsoft/hcsshim/internal/regstate/regstate_test.go

Documentation: github.com/Microsoft/hcsshim/internal/regstate

     1  //go:build windows
     2  
     3  package regstate
     4  
     5  import (
     6  	"os"
     7  	"testing"
     8  )
     9  
    10  var testKey = "runhcs-test-test-key"
    11  
    12  func prepTest(t *testing.T) {
    13  	t.Helper()
    14  	err := RemoveAll(testKey, true)
    15  	if err != nil && !os.IsNotExist(err) {
    16  		t.Fatal(err)
    17  	}
    18  }
    19  
    20  func TestLifetime(t *testing.T) {
    21  	prepTest(t)
    22  	k, err := Open(testKey, true)
    23  	if err != nil {
    24  		t.Fatal(err)
    25  	}
    26  	ids, err := k.Enumerate()
    27  	if err != nil {
    28  		t.Fatal(err)
    29  	}
    30  	if len(ids) != 0 {
    31  		t.Fatal("wrong count", len(ids))
    32  	}
    33  
    34  	id := "a/b/c"
    35  	key := "key"
    36  	err = k.Set(id, key, 1)
    37  	if err == nil {
    38  		t.Fatal("expected error")
    39  	}
    40  
    41  	var i int
    42  	err = k.Get(id, key, &i)
    43  	if err == nil {
    44  		t.Fatal("expected error")
    45  	}
    46  
    47  	err = k.Create(id, key, 2)
    48  	if err != nil {
    49  		t.Fatal(err)
    50  	}
    51  
    52  	ids, err = k.Enumerate()
    53  	if err != nil {
    54  		t.Fatal(err)
    55  	}
    56  	if len(ids) != 1 {
    57  		t.Fatal("wrong count", len(ids))
    58  	}
    59  	if ids[0] != id {
    60  		t.Fatal("wrong value", ids[0])
    61  	}
    62  
    63  	err = k.Get(id, key, &i)
    64  	if err != nil {
    65  		t.Fatal(err)
    66  	}
    67  	if i != 2 {
    68  		t.Fatal("got wrong value", i)
    69  	}
    70  
    71  	err = k.Set(id, key, 3)
    72  	if err != nil {
    73  		t.Fatal(err)
    74  	}
    75  	err = k.Get(id, key, &i)
    76  	if err != nil {
    77  		t.Fatal(err)
    78  	}
    79  	if i != 3 {
    80  		t.Fatal("got wrong value", i)
    81  	}
    82  
    83  	err = k.Remove(id)
    84  	if err != nil {
    85  		t.Fatal(err)
    86  	}
    87  	err = k.Remove(id)
    88  	if err == nil {
    89  		t.Fatal("expected error")
    90  	}
    91  
    92  	ids, err = k.Enumerate()
    93  	if err != nil {
    94  		t.Fatal(err)
    95  	}
    96  	if len(ids) != 0 {
    97  		t.Fatal("wrong count", len(ids))
    98  	}
    99  }
   100  
   101  func TestBool(t *testing.T) {
   102  	prepTest(t)
   103  	k, err := Open(testKey, true)
   104  	if err != nil {
   105  		t.Fatal(err)
   106  	}
   107  	id := "x"
   108  	key := "y"
   109  	err = k.Create(id, key, true)
   110  	if err != nil {
   111  		t.Fatal(err)
   112  	}
   113  	b := false
   114  	err = k.Get(id, key, &b)
   115  	if err != nil {
   116  		t.Fatal(err)
   117  	}
   118  	if !b {
   119  		t.Fatal("value did not marshal correctly")
   120  	}
   121  }
   122  
   123  func TestInt(t *testing.T) {
   124  	prepTest(t)
   125  	k, err := Open(testKey, true)
   126  	if err != nil {
   127  		t.Fatal(err)
   128  	}
   129  	id := "x"
   130  	key := "y"
   131  	err = k.Create(id, key, 10)
   132  	if err != nil {
   133  		t.Fatal(err)
   134  	}
   135  	v := 0
   136  	err = k.Get(id, key, &v)
   137  	if err != nil {
   138  		t.Fatal(err)
   139  	}
   140  	if v != 10 {
   141  		t.Fatal("value did not marshal correctly")
   142  	}
   143  }
   144  
   145  func TestString(t *testing.T) {
   146  	prepTest(t)
   147  	k, err := Open(testKey, true)
   148  	if err != nil {
   149  		t.Fatal(err)
   150  	}
   151  	id := "x"
   152  	key := "y"
   153  	err = k.Create(id, key, "blah")
   154  	if err != nil {
   155  		t.Fatal(err)
   156  	}
   157  	v := ""
   158  	err = k.Get(id, key, &v)
   159  	if err != nil {
   160  		t.Fatal(err)
   161  	}
   162  	if v != "blah" {
   163  		t.Fatal("value did not marshal correctly")
   164  	}
   165  }
   166  
   167  func TestJson(t *testing.T) {
   168  	prepTest(t)
   169  	k, err := Open(testKey, true)
   170  	if err != nil {
   171  		t.Fatal(err)
   172  	}
   173  	id := "x"
   174  	key := "y"
   175  	v := struct{ X int }{5}
   176  	err = k.Create(id, key, &v)
   177  	if err != nil {
   178  		t.Fatal(err)
   179  	}
   180  	v.X = 0
   181  	err = k.Get(id, key, &v)
   182  	if err != nil {
   183  		t.Fatal(err)
   184  	}
   185  	if v.X != 5 {
   186  		t.Fatal("value did not marshal correctly: ", v)
   187  	}
   188  }
   189  

View as plain text