github.com/unionj-cloud/go-doudou@v1.3.8-0.20221011095552-0088008e5b31/framework/registry/nacos/node_test.go (about)

     1  package nacos_test
     2  
     3  import (
     4  	"github.com/golang/mock/gomock"
     5  	"github.com/pkg/errors"
     6  	. "github.com/smartystreets/goconvey/convey"
     7  	"github.com/unionj-cloud/go-doudou/framework/buildinfo"
     8  	"github.com/unionj-cloud/go-doudou/framework/internal/config"
     9  	"github.com/unionj-cloud/go-doudou/framework/registry/nacos"
    10  	"github.com/unionj-cloud/go-doudou/framework/registry/nacos/mock"
    11  	"github.com/wubin1989/nacos-sdk-go/clients/naming_client"
    12  	"github.com/wubin1989/nacos-sdk-go/vo"
    13  	"testing"
    14  )
    15  
    16  func setup() {
    17  	_ = config.GddServiceName.Write("seed")
    18  	_ = config.GddLogLevel.Write("debug")
    19  	_ = config.GddPort.Write("8088")
    20  	_ = config.GddRouteRootPath.Write("/v1")
    21  	_ = config.GddNacosServerAddr.Write("http://localhost:8848")
    22  	_ = config.GddWeight.Write("5")
    23  }
    24  
    25  func TestNewNode(t *testing.T) {
    26  	Convey("Should not have error", t, func() {
    27  		setup()
    28  		_ = config.GddNacosRegisterHost.Write("seed")
    29  		ctrl := gomock.NewController(t)
    30  		defer ctrl.Finish()
    31  
    32  		buildinfo.BuildTime = "Mon Jan 2 15:04:05 MST 2006"
    33  		namingClient := mock.NewMockINamingClient(ctrl)
    34  		namingClient.
    35  			EXPECT().
    36  			RegisterInstance(gomock.Any()).
    37  			AnyTimes().
    38  			Return(true, nil)
    39  
    40  		namingClient.
    41  			EXPECT().
    42  			DeregisterInstance(gomock.Any()).
    43  			AnyTimes().
    44  			Return(true, nil)
    45  
    46  		nacos.NewNamingClient = func(param vo.NacosClientParam) (iClient naming_client.INamingClient, err error) {
    47  			return namingClient, nil
    48  		}
    49  
    50  		if nacos.NamingClient == nil {
    51  			nacos.NamingClient = namingClient
    52  		}
    53  
    54  		So(func() {
    55  			nacos.NewNode(map[string]interface{}{
    56  				"foo": "bar",
    57  			})
    58  		}, ShouldNotPanic)
    59  
    60  		nacos.Shutdown()
    61  		So(nacos.NamingClient, ShouldBeNil)
    62  	})
    63  }
    64  
    65  func TestNewNode2(t *testing.T) {
    66  	Convey("Should not have error", t, func() {
    67  		setup()
    68  		ctrl := gomock.NewController(t)
    69  		defer ctrl.Finish()
    70  
    71  		buildinfo.BuildTime = "Mon Jan 2 15:04:05 MST 2006"
    72  		namingClient := mock.NewMockINamingClient(ctrl)
    73  		namingClient.
    74  			EXPECT().
    75  			RegisterInstance(gomock.Any()).
    76  			AnyTimes().
    77  			Return(true, nil)
    78  
    79  		namingClient.
    80  			EXPECT().
    81  			DeregisterInstance(gomock.Any()).
    82  			AnyTimes().
    83  			Return(true, nil)
    84  
    85  		nacos.NewNamingClient = func(param vo.NacosClientParam) (iClient naming_client.INamingClient, err error) {
    86  			return namingClient, nil
    87  		}
    88  
    89  		if nacos.NamingClient == nil {
    90  			nacos.NamingClient = namingClient
    91  		}
    92  
    93  		_ = config.GddNacosRegisterHost.Write("")
    94  
    95  		So(func() {
    96  			nacos.NewNode(map[string]interface{}{
    97  				"foo": "bar",
    98  			})
    99  		}, ShouldNotPanic)
   100  
   101  		nacos.Shutdown()
   102  		So(nacos.NamingClient, ShouldBeNil)
   103  	})
   104  }
   105  
   106  func TestShutdownFail(t *testing.T) {
   107  	Convey("Should fail", t, func() {
   108  		setup()
   109  		ctrl := gomock.NewController(t)
   110  		defer ctrl.Finish()
   111  
   112  		buildinfo.BuildTime = "Mon Jan 2 15:04:05 MST 2006"
   113  		namingClient := mock.NewMockINamingClient(ctrl)
   114  		namingClient.
   115  			EXPECT().
   116  			RegisterInstance(gomock.Any()).
   117  			AnyTimes().
   118  			Return(true, nil)
   119  
   120  		namingClient.
   121  			EXPECT().
   122  			DeregisterInstance(gomock.Any()).
   123  			AnyTimes().
   124  			Return(false, errors.New("mock test error"))
   125  
   126  		nacos.NewNamingClient = func(param vo.NacosClientParam) (iClient naming_client.INamingClient, err error) {
   127  			return namingClient, nil
   128  		}
   129  
   130  		if nacos.NamingClient == nil {
   131  			nacos.NamingClient = namingClient
   132  		}
   133  
   134  		_ = config.GddNacosRegisterHost.Write("")
   135  
   136  		So(func() {
   137  			nacos.NewNode(map[string]interface{}{
   138  				"foo": "bar",
   139  			})
   140  		}, ShouldNotPanic)
   141  
   142  		nacos.Shutdown()
   143  		So(nacos.NamingClient, ShouldBeNil)
   144  	})
   145  }
   146  
   147  func TestShutdownFail2(t *testing.T) {
   148  	Convey("Should fail", t, func() {
   149  		setup()
   150  		ctrl := gomock.NewController(t)
   151  		defer ctrl.Finish()
   152  
   153  		buildinfo.BuildTime = "Mon Jan 2 15:04:05 MST 2006"
   154  		namingClient := mock.NewMockINamingClient(ctrl)
   155  		namingClient.
   156  			EXPECT().
   157  			RegisterInstance(gomock.Any()).
   158  			AnyTimes().
   159  			Return(true, nil)
   160  
   161  		namingClient.
   162  			EXPECT().
   163  			DeregisterInstance(gomock.Any()).
   164  			AnyTimes().
   165  			Return(false, nil)
   166  
   167  		nacos.NewNamingClient = func(param vo.NacosClientParam) (iClient naming_client.INamingClient, err error) {
   168  			return namingClient, nil
   169  		}
   170  
   171  		if nacos.NamingClient == nil {
   172  			nacos.NamingClient = namingClient
   173  		}
   174  
   175  		_ = config.GddNacosRegisterHost.Write("")
   176  
   177  		So(func() {
   178  			nacos.NewNode(map[string]interface{}{
   179  				"foo": "bar",
   180  			})
   181  		}, ShouldNotPanic)
   182  
   183  		nacos.Shutdown()
   184  		So(nacos.NamingClient, ShouldBeNil)
   185  	})
   186  }