-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
wsuszko/metadata-service tests (#127)
* go metadata-service: Introduce early draft of metadata tests. * go metadata-service: Further test experiments. * go, metadata-service: Introduce automated integration tests. * docker tests: Add spacing/ * go, metadata: Refactor, remove comments. * docker tests: Readd es-certs. * docker: Remove test script.
- Loading branch information
Showing
13 changed files
with
864 additions
and
109 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
package tests | ||
|
||
import ( | ||
"context" | ||
"time" | ||
|
||
messagebroker "github.com/Magpie-Monitor/magpie-monitor/pkg/message-broker" | ||
"github.com/Magpie-Monitor/magpie-monitor/services/cluster_metadata/pkg/repositories" | ||
"github.com/Magpie-Monitor/magpie-monitor/services/cluster_metadata/pkg/services" | ||
"go.uber.org/zap" | ||
) | ||
|
||
func NewMockApplicationMetadataBroker(logger *zap.Logger) messagebroker.MessageBroker[repositories.ApplicationState] { | ||
return NewKafkaJsonMessageBroker[repositories.ApplicationState](logger) | ||
} | ||
|
||
func NewMockNodeMetadataBroker(logger *zap.Logger) messagebroker.MessageBroker[repositories.NodeState] { | ||
return NewKafkaJsonMessageBroker[repositories.NodeState](logger) | ||
} | ||
|
||
func NewMockNodeMetadataUpdatedBroker(logger *zap.Logger) messagebroker.MessageBroker[services.NodeMetadataUpdated] { | ||
return NewKafkaJsonMessageBroker[services.NodeMetadataUpdated](logger) | ||
} | ||
|
||
func NewMockApplicationMetadataUpdatedBroker(logger *zap.Logger) messagebroker.MessageBroker[services.ApplicationMetadataUpdated] { | ||
return NewKafkaJsonMessageBroker[services.ApplicationMetadataUpdated](logger) | ||
} | ||
|
||
func NewMockClusterMetadataUpdatedBroker(logger *zap.Logger) messagebroker.MessageBroker[services.ClusterMetadataUpdated] { | ||
return NewKafkaJsonMessageBroker[services.ClusterMetadataUpdated](logger) | ||
} | ||
|
||
type MockKafkaJsonMessageBroker[T any] struct { | ||
messages []T | ||
logger *zap.Logger | ||
} | ||
|
||
func NewKafkaJsonMessageBroker[T any](logger *zap.Logger) messagebroker.MessageBroker[T] { | ||
return &MockKafkaJsonMessageBroker[T]{ | ||
logger: logger, | ||
messages: make([]T, 0), | ||
} | ||
} | ||
|
||
func (b *MockKafkaJsonMessageBroker[T]) Publish(key string, message T) error { | ||
b.messages = append(b.messages, message) | ||
b.logger.Info("Received message", zap.Any("messages", b.messages)) | ||
return nil | ||
} | ||
|
||
func (b *MockKafkaJsonMessageBroker[T]) Subscribe(ctx context.Context, messages chan<- T, errors chan<- error) { | ||
for { | ||
for _, msg := range b.messages { | ||
messages <- msg | ||
b.logger.Info("Published message", zap.Any("message", msg)) | ||
} | ||
b.messages = make([]T, 0) | ||
|
||
time.Sleep(5 * time.Second) | ||
} | ||
} | ||
|
||
func (b *MockKafkaJsonMessageBroker[T]) CloseReader() error { | ||
return nil | ||
} | ||
|
||
var _ messagebroker.MessageBroker[any] = &MockKafkaJsonMessageBroker[any]{} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,6 @@ | ||
package tests | ||
|
||
import ( | ||
// "context" | ||
"context" | ||
"testing" | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,92 +1,16 @@ | ||
package main | ||
|
||
import ( | ||
"context" | ||
"fmt" | ||
"net" | ||
"net/http" | ||
"os" | ||
|
||
messagebroker "github.com/Magpie-Monitor/magpie-monitor/pkg/message-broker" | ||
"github.com/Magpie-Monitor/magpie-monitor/pkg/mongodb" | ||
"github.com/Magpie-Monitor/magpie-monitor/pkg/routing" | ||
"github.com/Magpie-Monitor/magpie-monitor/pkg/swagger" | ||
"github.com/Magpie-Monitor/magpie-monitor/services/cluster_metadata/internal/database" | ||
"github.com/Magpie-Monitor/magpie-monitor/services/cluster_metadata/internal/handlers" | ||
"github.com/Magpie-Monitor/magpie-monitor/services/cluster_metadata/pkg/repositories" | ||
"github.com/Magpie-Monitor/magpie-monitor/services/cluster_metadata/pkg/config" | ||
"github.com/Magpie-Monitor/magpie-monitor/services/cluster_metadata/pkg/services" | ||
"github.com/gorilla/mux" | ||
"go.uber.org/fx" | ||
"go.uber.org/fx/fxevent" | ||
"go.uber.org/zap" | ||
) | ||
|
||
type ServerParams struct { | ||
fx.In | ||
Lc fx.Lifecycle | ||
Logger *zap.Logger | ||
MetadataRouter *handlers.MetadataRouter | ||
RootRouter *mux.Router | ||
SwaggerRouter *swagger.SwaggerRouter | ||
} | ||
|
||
func NewHTTPServer(ServerParams ServerParams) *http.Server { | ||
port := os.Getenv("HTTP_PORT") | ||
|
||
srv := &http.Server{Addr: fmt.Sprintf(":%s", port), Handler: ServerParams.RootRouter} | ||
ServerParams.Lc.Append(fx.Hook{ | ||
OnStart: func(ctx context.Context) error { | ||
ln, err := net.Listen("tcp", srv.Addr) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
ServerParams.Logger.Info("Starting HTTP server at", zap.String("addr", srv.Addr)) | ||
go srv.Serve(ln) | ||
return nil | ||
}, | ||
OnStop: func(ctx context.Context) error { | ||
return srv.Shutdown(ctx) | ||
}, | ||
}) | ||
return srv | ||
} | ||
|
||
func main() { | ||
fx.New( | ||
fx.WithLogger(func(log *zap.Logger) fxevent.Logger { | ||
return &fxevent.ZapLogger{Logger: log} | ||
}), | ||
fx.Provide( | ||
NewHTTPServer, | ||
|
||
routing.NewRootRouter, | ||
|
||
swagger.NewSwaggerRouter, | ||
swagger.NewSwaggerHandler, | ||
swagger.ProvideSwaggerConfig(), | ||
|
||
handlers.NewMetadataRouter, | ||
handlers.NewMetadataHandler, | ||
|
||
mongodb.NewMongoDbClient, | ||
database.NewMongoDbConnectionDetails, | ||
messagebroker.NewKafkaCredentials, | ||
|
||
services.NewMetadataService, | ||
services.NewMetadataEventPublisher, | ||
|
||
services.NewApplicationMetadataBroker, | ||
services.NewNodeMetadataBroker, | ||
|
||
repositories.NewApplicationMetadataCollection, | ||
repositories.NewNodeMetadataCollection, | ||
repositories.NewApplicationAggregatedMetadataCollection, | ||
repositories.NewNodeAggregatedMetadataCollection, | ||
repositories.NewClusterAggregatedStateCollection, | ||
|
||
zap.NewProduction, | ||
), | ||
fx.Invoke(func(*http.Server) {}), | ||
config.AppModule, | ||
fx.Invoke(func(*http.Server, *services.MetadataService) {}), | ||
).Run() | ||
} |
Oops, something went wrong.