mock_service.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // package mock_service -- мок-сервис для тестирования
  2. package mock_service
  3. import (
  4. "context"
  5. "log"
  6. "sync"
  7. "git.p78su.freemyip.com/svi/gostore/pkg/types"
  8. )
  9. // MockService -- мок-сервис для тестирования
  10. type MockService struct {
  11. fnCancel func()
  12. ctx context.Context
  13. ServHttp_ types.IServHttp
  14. Store_ types.IStore
  15. Wg_ *sync.WaitGroup
  16. }
  17. // NewMockService -- возвращает новый мок-сервис
  18. func NewMockService() *MockService {
  19. ctxBg := context.Background()
  20. ctx, fnCancel := context.WithCancel(ctxBg)
  21. sf := &MockService{
  22. ctx: ctx,
  23. fnCancel: fnCancel,
  24. Wg_: &sync.WaitGroup{},
  25. }
  26. return sf
  27. }
  28. // Wg -- возвращает ожидатель группы потоков
  29. func (sf *MockService) Wg() *sync.WaitGroup {
  30. return sf.Wg_
  31. }
  32. // Store -- возвращает хранилище
  33. func (sf *MockService) Store() types.IStore {
  34. return sf.Store_
  35. }
  36. // ServHttp -- возвращает HTTP-сервис
  37. func (sf *MockService) ServHttp() types.IServHttp {
  38. return sf.ServHttp_
  39. }
  40. // Run -- запускает сервис в работу
  41. func (sf *MockService) Run() {
  42. log.Printf("MockService.Run()\n")
  43. if sf.ServHttp_ != nil {
  44. go sf.ServHttp_.Run()
  45. }
  46. sf.Wg_.Wait()
  47. }
  48. // Ctx -- возвращает контекст приложения
  49. func (sf *MockService) Ctx() context.Context {
  50. return sf.ctx
  51. }
  52. // CancelApp -- отменяет контекст приложения
  53. func (sf *MockService) CancelApp() {
  54. sf.fnCancel()
  55. }