Browse Source

SVI Доработка тестов; 81.9%

user 9 months ago
parent
commit
f81fe7cac9

+ 1 - 7
internal/service/service.go

@@ -4,7 +4,6 @@ package service
 import (
 	"context"
 	"fmt"
-	"log"
 	"sync"
 
 	// "git.p78su.freemyip.com/svi/gostore/internal/store_user"
@@ -74,11 +73,6 @@ func (sf *Service) Wg() *sync.WaitGroup {
 
 // Run -- запускает сервис в работу
 func (sf *Service) Run() {
-	go func() {
-		err := sf.servHttp.Run()
-		if err != nil {
-			log.Printf("Service.Run(): in run IServHttp, err=\n\t%v\n", err)
-		}
-	}()
+	go  sf.servHttp.Run()
 	sf.wg.Wait()
 }

+ 9 - 9
pkg/client_anonym/client_anonym.go

@@ -20,7 +20,7 @@ type ClientAnonym struct {
 	servCtx   types.IServCtx
 	client    *http.Client
 	url       string       // Базовый адрес сервера
-	urlTime   string       // URL для получения времени
+	urlPing   string       // URL для пинга сервера
 	urlPut    string       // URL для записи данных
 	urlRead   string       // URL для чтения данных
 	urlDelete string       // URL для удаления данных
@@ -56,7 +56,7 @@ func NewClientAnonym(serv types.IServCtx, url string) (*ClientAnonym, error) {
 			},
 		},
 		url:       url,
-		urlTime:   url + "anonym/time",
+		urlPing:   url + "anonym/time",
 		urlPut:    url + "anonym/put",
 		urlRead:   url + "anonym/get",
 		urlDelete: url + "anonym/del",
@@ -182,22 +182,22 @@ func (sf *ClientAnonym) Put(key string, binData []byte) (string, error) {
 	return strResp, nil
 }
 
-// Time -- пингует указанный сервис в реальном времени
-func (sf *ClientAnonym) Time() error {
+// Ping -- пингует указанный сервис в реальном времени
+func (sf *ClientAnonym) Ping() error {
 	if sf.isClosed() {
-		return fmt.Errorf("ClientAnonym.Time(): client is closed")
+		return fmt.Errorf("ClientAnonym.Ping(): client is closed")
 	}
-	resp, err := sf.client.Get(sf.urlTime)
+	resp, err := sf.client.Post(sf.urlPing, "application/x-www-form-urlencoded", nil)
 	if err != nil {
-		return fmt.Errorf("ClientAnonym.Time(): in get url(%q), err=\n\t%w", sf.urlTime, err)
+		return fmt.Errorf("ClientAnonym.Ping(): in get url(%q), err=\n\t%w", sf.urlPing, err)
 	}
 	defer resp.Body.Close()
 	if resp.StatusCode != http.StatusOK {
-		return fmt.Errorf("ClientAnonym.Time(): err=%s", resp.Status)
+		return fmt.Errorf("ClientAnonym.Ping(): url=`%v`, err=%s", sf.urlPing, resp.Status)
 	}
 	binBody, err := io.ReadAll(resp.Body)
 	if err != nil {
-		return fmt.Errorf("ClientAnonym.Time(): err=\n\t%w", err)
+		return fmt.Errorf("ClientAnonym.Ping(): err=\n\t%w", err)
 	}
 	_ = binBody
 	return err

+ 50 - 0
pkg/client_anonym/client_anonym_test.go

@@ -28,6 +28,55 @@ func TestClientAnonym(t *testing.T) {
 		t: t,
 	}
 	sf.create()
+	sf.ping()
+	sf.close()
+}
+
+// Закрытие сервиса
+func (sf *tester) close() {
+	sf.t.Log("close")
+	sf.serv.CancelApp()
+	sf.serv.Wg().Wait()
+	sf.client.close()
+}
+
+// Пингует сервер
+func (sf *tester) ping() {
+	sf.t.Log("ping")
+	sf.pingBad1()
+	sf.pingBad2()
+	sf.pingGood1()
+}
+
+func (sf *tester) pingGood1() {
+	sf.t.Log("pingGood1")
+	err := sf.client.Ping()
+	if err != nil {
+		sf.t.Fatalf("pingGood1(): err=\n\t%v", err)
+	}
+}
+
+// Нельзя достучаться до сервиса
+func (sf *tester) pingBad2() {
+	sf.t.Log("pingBad2")
+	url := sf.client.urlPing
+	sf.client.urlPing = "https://google.com/time"
+	err := sf.client.Ping()
+	if err == nil {
+		sf.t.Fatalf("pingBad2(): err==nil")
+	}
+	sf.client.urlPing = url
+}
+
+// Клиент закрыт для запроса
+func (sf *tester) pingBad1() {
+	sf.t.Log("pingBad1")
+	sf.client.isWork = false
+	err := sf.client.Ping()
+	if err == nil {
+		sf.t.Fatalf("pingBad1(): err==nil")
+	}
+	sf.client.isWork = true
 }
 
 // Создание клиента
@@ -58,6 +107,7 @@ func (sf *tester) createBad2() {
 	if err != nil {
 		sf.t.Fatalf("createBad2(): err=\n\t%v", err)
 	}
+	go sf.serv.Run()
 	client, err := NewClientAnonym(sf.serv, "")
 	if err == nil {
 		sf.t.Fatalf("createBad2(): err==nil")

+ 4 - 0
pkg/mock/mock_service/mock_service.go

@@ -48,6 +48,10 @@ func (sf *MockService) ServHttp() types.IServHttp {
 // Run -- запускает сервис в работу
 func (sf *MockService) Run() {
 	log.Printf("MockService.Run()\n")
+	if sf.ServHttp_ != nil {
+		go sf.ServHttp_.Run()
+	}
+	sf.Wg_.Wait()
 }
 
 // Ctx -- возвращает контекст приложения

+ 8 - 4
pkg/mock/mock_service/mock_service_test.go

@@ -20,8 +20,15 @@ func TestMockService(t *testing.T) {
 		t: t,
 	}
 	sf.create()
+	sf.close()
 }
 
+// Закрытие мок-сервиса
+func (sf *tester) close() {
+	sf.t.Log("close")
+	sf.serv.CancelApp()
+	sf.serv.Wg().Wait()
+}
 // Создание мок-сервиса
 func (sf *tester) create() {
 	sf.t.Log("create")
@@ -35,11 +42,8 @@ func (sf *tester) create() {
 	if serv := sf.serv.ServHttp(); serv != nil {
 		sf.t.Fatalf("create(): serv!=nil")
 	}
-	sf.serv.Run()
 	if ctx := sf.serv.Ctx(); ctx == nil {
 		sf.t.Fatalf("create(): ctx==nil")
 	}
-	sf.serv.Run()
-	sf.serv.CancelApp()
-	sf.serv.Wg().Wait()
+	go sf.serv.Run()
 }

+ 12 - 2
pkg/mock/mock_web/mock_web.go

@@ -3,6 +3,7 @@ package mock_web
 
 import (
 	"fmt"
+	"log"
 
 	"github.com/gofiber/fiber/v2"
 
@@ -33,8 +34,17 @@ func (sf *MockWeb) Service() types.IService {
 }
 
 // Run -- запускает веб-сервер в работу
-func (sf *MockWeb) Run() error {
-	return nil
+func (sf *MockWeb) Run() {
+	sf.serv.Wg().Add(1)
+	go func() {
+		err := sf.fiberApp.Listen(":25000")
+		if err != nil {
+			log.Printf("MockWeb.Run(): in listen port(25000), err=\n\t%v\n", err)
+			sf.serv.CancelApp()
+			sf.serv.Wg().Done()
+		}
+	}()
+
 }
 
 // FiberApp -- возвращает приложение fiber

+ 1 - 3
pkg/mock/mock_web/mock_web_test.go

@@ -50,9 +50,7 @@ func (sf *tester) createGood1() {
 	if serv := sf.mockWeb.Service(); serv == nil {
 		sf.t.Fatalf("createGood1(): serv==nil")
 	}
-	if err := sf.mockWeb.Run(); err != nil {
-		sf.t.Fatalf("createGood1(): err=\n\t%v", err)
-	}
+	 sf.mockWeb.Run();
 
 }
 

+ 13 - 11
pkg/serv_http/serv_http.go

@@ -43,7 +43,7 @@ func NewServHttp(serv types.IService) (types.IServHttp, error) {
 	if port == "" {
 		return nil, fmt.Errorf("NewServHttp(): env STORE_HTTP_PORT not set")
 	}
-	engineTmpl := html.New("./static/tmpl", ".tmpl.html")
+	engineTmpl := html.New("./web/tmpl", ".tmpl.html")
 	appConf := fiber.Config{
 		Prefork:              false,
 		ServerHeader:         "GoStore",
@@ -132,9 +132,6 @@ func NewServHttp(serv types.IService) (types.IServHttp, error) {
 		return nil, err
 	}
 	sf.fiberApp.Get("/", sf.get)
-	sf.serv.Wg().Add(1)
-	sf.isWork = true
-	go sf.close()
 	return sf, nil
 }
 
@@ -154,13 +151,18 @@ func (sf *ServHttp) FiberApp() *fiber.App {
 }
 
 // Run -- запускает веб-сервер в работу
-func (sf *ServHttp) Run() error {
-	defer sf.serv.CancelApp()
-	err := sf.fiberApp.Listen(":" + sf.port)
-	if err != nil {
-		return fmt.Errorf("ServHttp.Run(): in listen port(%q), err=\n\t%w", sf.port, err)
-	}
-	return nil
+func (sf *ServHttp) Run() {
+	sf.serv.Wg().Add(1)
+	sf.isWork = true
+	go sf.close()
+	go func() {
+		err := sf.fiberApp.Listen(":" + sf.port)
+		if err != nil {
+			log.Printf("ServHttp.Run(): in listen port(%q), err=\n\t%v\n", sf.port, err)
+		}
+		sf.serv.CancelApp()
+	}()
+
 }
 
 func (sf *ServHttp) close() {

+ 1 - 1
pkg/serv_http/serv_http_test.go

@@ -71,7 +71,7 @@ func (sf *tester) createGood1() {
 		sf.t.Fatalf("createGood1(): web==nil")
 	}
 	go func() {
-		_ = sf.web.Run()
+		sf.web.Run()
 	}()
 	sf.serv.CancelApp()
 	time.Sleep(50 * time.Millisecond)

+ 1 - 1
pkg/types/iserv_http.go

@@ -5,7 +5,7 @@ import "github.com/gofiber/fiber/v2"
 // IServHttp -- встроенный веб-сервер
 type IServHttp interface {
 	// Run -- запускает веб-сервер в работу
-	Run() error
+	Run()
 	// FiberApp -- возвращает Fiber-приложение
 	FiberApp() *fiber.App
 	// Service -- возвращает сервис