Преглед изворни кода

SVI Добавление тестов прокси клиента; 55.4%

SVI пре 2 година
родитељ
комит
0a2aa843b0
2 измењених фајлова са 104 додато и 7 уклоњено
  1. 4 4
      pkg/net/cleint_proxy/client_proxy.go
  2. 100 3
      pkg/net/cleint_proxy/client_proxy_test.go

+ 4 - 4
pkg/net/cleint_proxy/client_proxy.go

@@ -23,7 +23,6 @@ type ClientProxy struct {
 
 // NewClientProxy -- возвращает новый прокси подписывания клиента на топик
 func NewClientProxy(req *netapi.SubscribeRequest) (*ClientProxy, error) {
-
 	{ // Предусловия
 		if req == nil {
 			return nil, fmt.Errorf("NewClientProxy(): SubscribeRequest==nil")
@@ -31,9 +30,6 @@ func NewClientProxy(req *netapi.SubscribeRequest) (*ClientProxy, error) {
 		if req.ClientName == "" {
 			return nil, fmt.Errorf("NewClientProxy(): name is empty")
 		}
-		if req.Sample == "" {
-			return nil, fmt.Errorf("NewClientProxy(): sample is empty")
-		}
 	}
 	log.Printf("NewClientProxy(): name=%q, sample=%q\n", req.ClientName, req.Sample)
 	suffix := "_" + alias.ClientName(fmt.Sprint(time.Now().UnixMilli()))
@@ -75,6 +71,10 @@ func (sf *ClientProxy) Write(msg *netapi.TopicMsg) {
 	if !sf.isWork {
 		return
 	}
+	if msg == nil {
+		log.Printf("ClientProxy.Write(): clientName=%q, msg==nil\n", sf.name)
+		return
+	}
 	sf.chMsg <- msg
 }
 

+ 100 - 3
pkg/net/cleint_proxy/client_proxy_test.go

@@ -1,13 +1,19 @@
 package cleint_proxy
 
-import "testing"
+import (
+	"strings"
+	"testing"
+
+	"p78git.ddns.net/svi/gobus/api/netapi"
+)
 
 /*
-	Тест для ...
+	Тест для прокси клиента
 */
 
 type tester struct {
-	t *testing.T
+	t     *testing.T
+	proxy *ClientProxy
 }
 
 func TestAny(t *testing.T) {
@@ -15,8 +21,99 @@ func TestAny(t *testing.T) {
 		t: t,
 	}
 	sf.create()
+	sf.write()
+}
+
+// Запись сообщения в прокси клиента
+func (sf *tester) write() {
+	sf.t.Log("write")
+	sf.writeBad1()
+	sf.writeGood1()
+	sf.read()
+}
+
+// Читает сообщение из шины
+func (sf *tester) read() {
+	sf.t.Log("read")
+	msg := sf.proxy.Read()
+	if msg == nil {
+		sf.t.Fatalf("read(): msg==nil")
+	}
+	sf.proxy.ResetWork()
+	sf.writeGood1()
+}
+
+func (sf *tester) writeGood1() {
+	sf.t.Log("writeGood1")
+	msg := &netapi.TopicMsg{
+		Source:  0,
+		Topic:   "",
+		BinMsg:  []byte{},
+		StrUuid: "",
+	}
+	sf.proxy.Write(msg)
+}
+
+// Нет сообщения для прокси
+func (sf *tester) writeBad1() {
+	sf.t.Log("writeBad1")
+	sf.proxy.Write(nil)
 }
 
+// Создание прокси для клиента
 func (sf *tester) create() {
 	sf.t.Log("create")
+	sf.createBad1()
+	sf.createBad2()
+	sf.createGood1()
+}
+
+func (sf *tester) createGood1() {
+	sf.t.Log("createGood1")
+	req := &netapi.SubscribeRequest{
+		Sample:     "_",
+		ClientName: "test_client",
+	}
+	var err error
+	sf.proxy, err = NewClientProxy(req)
+	if err != nil {
+		sf.t.Fatalf("createGood1(): err=%v", err)
+	}
+	if sf.proxy == nil {
+		sf.t.Fatalf("createGood1(): proxy==nil")
+	}
+	if !sf.proxy.IsWork() {
+		sf.t.Fatalf("createGood1(): not work")
+	}
+	if sample := sf.proxy.SampleTopic(); sample != "_" {
+		sf.t.Fatalf("createGood1(): sample(%q)!='_'", sample)
+	}
+	if !strings.HasPrefix(string(sf.proxy.ClientName()), "test_client") {
+		sf.t.Fatalf("createGood1(): not have prefix 'test_client', clientName(%q)", sf.proxy.ClientName())
+	}
+}
+
+// В запросе нет имени клиента
+func (sf *tester) createBad2() {
+	sf.t.Log("createBad2")
+	req := &netapi.SubscribeRequest{}
+	proxy, err := NewClientProxy(req)
+	if err == nil {
+		sf.t.Fatalf("createBad2(): err==nil")
+	}
+	if proxy != nil {
+		sf.t.Fatalf("createBad2(): proxy!=nil")
+	}
+}
+
+// Нет запроса для создания прокси клиента
+func (sf *tester) createBad1() {
+	sf.t.Log("createBad1")
+	proxy, err := NewClientProxy(nil)
+	if err == nil {
+		sf.t.Fatalf("createBad1(): err==nil")
+	}
+	if proxy != nil {
+		sf.t.Fatalf("createBad1(): proxy!=nil")
+	}
 }