88 "encoding/json"
99 "encoding/xml"
1010 "fmt"
11+ "github.com/Azure/azure-container-networking/store"
1112 "net/http"
1213 "net/http/httptest"
1314 "net/url"
@@ -26,6 +27,7 @@ import (
2627const (
2728 defaultCnsURL = "http://localhost:10090"
2829 contentTypeJSON = "application/json"
30+ cnsJsonFileName = "azure-cns.json"
2931)
3032
3133type IPAddress struct {
@@ -125,7 +127,10 @@ func TestMain(m *testing.M) {
125127 logger .InitLogger ("testlogs" , 0 , 0 , "./" )
126128
127129 // Create the service.
128- startService ()
130+ if err = startService (); err != nil {
131+ fmt .Printf ("Failed to start CNS Service. Error: %v" , err )
132+ os .Exit (1 )
133+ }
129134
130135 // Setup mock nmagent server
131136 u , err := url .Parse ("tcp://" + nmagentEndpoint )
@@ -908,34 +913,50 @@ func setEnv(t *testing.T) *httptest.ResponseRecorder {
908913 return w
909914}
910915
911- func startService () {
916+ func startService () error {
912917 var err error
913918 // Create the service.
914919 config := common.ServiceConfig {}
920+ // Create the key value store.
921+ if config .Store , err = store .NewJsonFileStore (cnsJsonFileName ); err != nil {
922+ logger .Errorf ("Failed to create store file: %s, due to error %v\n " , cnsJsonFileName , err )
923+ return err
924+ }
925+
915926 service , err = NewHTTPRestService (& config , fakes .NewFakeImdsClient (), fakes .NewFakeNMAgentClient ())
916927 if err != nil {
917- fmt .Printf ("Failed to create CNS object %v\n " , err )
918- os .Exit (1 )
928+ return err
919929 }
920930 svc = service .(* HTTPRestService )
921931 svc .Name = "cns-test-server"
922932 if err != nil {
923933 logger .Errorf ("Failed to create CNS object, err:%v.\n " , err )
924- return
934+ return err
925935 }
926936
927937 svc .IPAMPoolMonitor = fakes .NewIPAMPoolMonitorFake ()
928938
929939 if service != nil {
940+ // Create empty azure-cns.json. CNS should start successfully by deleting this file
941+ file , _ := os .Create (cnsJsonFileName )
942+ file .Close ()
943+
930944 err = service .Start (& config )
931945 if err != nil {
932946 logger .Errorf ("Failed to start CNS, err:%v.\n " , err )
933- return
947+ return err
948+ }
949+
950+ if _ , err := os .Stat (cnsJsonFileName ); err == nil || ! os .IsNotExist (err ) {
951+ logger .Errorf ("Failed to remove empty CNS state file: %s, err:%v" , cnsJsonFileName , err )
952+ return err
934953 }
935954 }
936955
937956 // Get the internal http mux as test hook.
938957 mux = service .(* HTTPRestService ).Listener .GetMux ()
958+
959+ return nil
939960}
940961
941962// IGNORE TEST AS IT IS FAILING. TODO:- Fix it https://msazure.visualstudio.com/One/_workitems/edit/7720083
0 commit comments