Skip to content

Commit

Permalink
Merge 7366602 into 25ed94e
Browse files Browse the repository at this point in the history
  • Loading branch information
ghostec committed Jun 5, 2019
2 parents 25ed94e + 7366602 commit 654f25b
Show file tree
Hide file tree
Showing 15 changed files with 391 additions and 124 deletions.
89 changes: 10 additions & 79 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,6 @@
name = "github.com/spf13/viper"
version = "v1.1.0"

[[constraint]]
[[override]]
name = "github.com/topfreegames/go-extensions-k8s-client-go"
version = "v2.0.4"
version = "kubernetes-1.11.7"
16 changes: 14 additions & 2 deletions api/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -446,6 +446,8 @@ func (a *App) loadConfigurationDefaults() {
a.Config.SetDefault("api.limitManager.keyTimeout", 1*time.Minute)
a.Config.SetDefault("jaeger.disabled", false)
a.Config.SetDefault("jaeger.samplingProbability", 1.0)
a.Config.SetDefault("addrGetter.cache.use", false)
a.Config.SetDefault("addrGetter.cache.expirationInterval", "10m")
a.Config.SetDefault(EnvironmentConfig, ProdEnvironment)
}

Expand Down Expand Up @@ -568,11 +570,21 @@ func (a *App) configureServer(showProfile bool) {
}

func (a *App) configureEnvironment() {
a.RoomAddrGetter = models.NewRoomAddressesFromHostPort(a.Config.GetString(Ipv6KubernetesLabelKey))
a.RoomAddrGetter = models.NewRoomAddressesFromHostPort(
a.Logger,
a.Config.GetString(Ipv6KubernetesLabelKey),
a.Config.GetBool("addrGetter.cache.use"),
a.Config.GetDuration("addrGetter.cache.expirationInterval"),
)
a.RoomManager = &models.GameRoom{}

if a.Config.GetString(EnvironmentConfig) == DevEnvironment {
a.RoomAddrGetter = models.NewRoomAddressesFromNodePort(a.Config.GetString(Ipv6KubernetesLabelKey))
a.RoomAddrGetter = models.NewRoomAddressesFromNodePort(
a.Logger,
a.Config.GetString(Ipv6KubernetesLabelKey),
a.Config.GetBool("addrGetter.cache.use"),
a.Config.GetDuration("addrGetter.cache.expirationInterval"),
)
a.RoomManager = &models.GameRoomWithService{}
a.Logger.Info("development environment")
return
Expand Down
7 changes: 5 additions & 2 deletions api/room_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ func (g *RoomPingHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
_, err = eventforwarder.ForwardRoomEvent(
ctx,
g.App.Forwarders,
g.App.RedisClient.Trace(ctx),
g.App.DBClient.WithContext(ctx),
kubernetesClient,
room, fmt.Sprintf("ping%s", strings.Title(payload.Status)),
Expand Down Expand Up @@ -212,6 +213,7 @@ func (g *RoomEventHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
resp, err := eventforwarder.ForwardRoomEvent(
r.Context(),
g.App.Forwarders,
g.App.RedisClient.Trace(ctx),
g.App.DBClient.WithContext(ctx),
kubernetesClient,
room,
Expand Down Expand Up @@ -291,8 +293,9 @@ func (g *RoomStatusHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
return
}
_, err = eventforwarder.ForwardRoomEvent(
r.Context(),
ctx,
g.App.Forwarders,
g.App.RedisClient.Trace(ctx),
g.App.DBClient.WithContext(ctx),
kubernetesClient,
room, payload.Status, "",
Expand Down Expand Up @@ -337,7 +340,7 @@ func (h *RoomAddressHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {

room := models.NewRoom(params.Name, params.Scheduler)
kubernetesClient := kubernetes.TryWithContext(h.App.KubernetesClient, ctx)
roomAddresses, err := h.App.RoomAddrGetter.Get(room, kubernetesClient)
roomAddresses, err := h.App.RoomAddrGetter.Get(room, kubernetesClient, h.App.RedisClient.Trace(ctx))

if err != nil {
status := http.StatusInternalServerError
Expand Down
13 changes: 13 additions & 0 deletions api/room_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ forwarders:
})
request, _ = http.NewRequest("PUT", url, reader)

mockRedisTraceWrapper.EXPECT().WithContext(gomock.Any(), mockRedisClient).Return(mockRedisClient)
mockDb.EXPECT().Query(gomock.Any(), "SELECT * FROM schedulers WHERE name = ?", namespace).
Do(func(scheduler *models.Scheduler, query string, modifier string) {
scheduler.YAML = yamlStr
Expand Down Expand Up @@ -146,6 +147,8 @@ forwarders:
})
request, _ = http.NewRequest("PUT", url, reader)

mockRedisTraceWrapper.EXPECT().WithContext(gomock.Any(), mockRedisClient).Return(mockRedisClient)
mockRedisTraceWrapper.EXPECT().WithContext(gomock.Any(), mockRedisClient).Return(mockRedisClient)
mockDb.EXPECT().Query(gomock.Any(), "SELECT * FROM schedulers WHERE name = ?", namespace).
Do(func(scheduler *models.Scheduler, query string, modifier string) {
scheduler.YAML = yamlStr
Expand Down Expand Up @@ -277,6 +280,7 @@ forwarders:
})
request, _ = http.NewRequest("PUT", url, reader)

mockRedisTraceWrapper.EXPECT().WithContext(gomock.Any(), mockRedisClient).Return(mockRedisClient)
mockDb.EXPECT().Query(gomock.Any(), "SELECT * FROM schedulers WHERE name = ?", namespace).
Do(func(scheduler *models.Scheduler, query string, modifier string) {
scheduler.YAML = yamlStr
Expand Down Expand Up @@ -329,6 +333,7 @@ forwarders:
})
request, _ = http.NewRequest("PUT", url, reader)

mockRedisTraceWrapper.EXPECT().WithContext(gomock.Any(), mockRedisClient).Return(mockRedisClient)
mockDb.EXPECT().Query(gomock.Any(), "SELECT * FROM schedulers WHERE name = ?", namespace).
Do(func(scheduler *models.Scheduler, query string, modifier string) {
scheduler.YAML = yamlStr
Expand Down Expand Up @@ -437,6 +442,7 @@ forwarders:
})
request, _ = http.NewRequest("PUT", url, reader)

mockRedisTraceWrapper.EXPECT().WithContext(gomock.Any(), mockRedisClient).Return(mockRedisClient)
mockDb.EXPECT().Query(gomock.Any(), "SELECT * FROM schedulers WHERE name = ?", namespace).
Do(func(scheduler *models.Scheduler, query string, modifier string) {
scheduler.YAML = yamlStr
Expand Down Expand Up @@ -591,6 +597,7 @@ forwarders:
mockPipeline.EXPECT().SRem(key, rKey)
}
mockPipeline.EXPECT().Exec()
mockRedisTraceWrapper.EXPECT().WithContext(gomock.Any(), mockRedisClient).Return(mockRedisClient)
mockDb.EXPECT().Query(gomock.Any(), "SELECT * FROM schedulers WHERE name = ?", namespace).
Do(func(scheduler *models.Scheduler, query string, modifier string) {
scheduler.YAML = yamlStr
Expand Down Expand Up @@ -629,6 +636,7 @@ forwarders:
mockPipeline.EXPECT().SRem(key, rKey)
}
mockPipeline.EXPECT().Exec()
mockRedisTraceWrapper.EXPECT().WithContext(gomock.Any(), mockRedisClient).Return(mockRedisClient)
mockDb.EXPECT().Query(gomock.Any(), "SELECT * FROM schedulers WHERE name = ?", namespace).
Do(func(scheduler *models.Scheduler, query string, modifier string) {
scheduler.YAML = yamlStr
Expand Down Expand Up @@ -906,6 +914,7 @@ forwarders:
scheduler.Game = game
})

mockRedisTraceWrapper.EXPECT().WithContext(gomock.Any(), mockRedisClient).Return(mockRedisClient)
mockEventForwarder1.EXPECT().Forward(gomock.Any(), "roomEvent", gomock.Any(), gomock.Any()).Return(
int32(500), "", errors.New("some error occurred"),
)
Expand All @@ -929,6 +938,7 @@ forwarders:
"metadata": make(map[string]interface{}),
})
request, _ = http.NewRequest("POST", url, reader)
mockRedisTraceWrapper.EXPECT().WithContext(gomock.Any(), mockRedisClient).Return(mockRedisClient)
mockDb.EXPECT().Query(
gomock.Any(),
"SELECT * FROM schedulers WHERE name = ?",
Expand Down Expand Up @@ -961,6 +971,7 @@ forwarders:
"metadata": make(map[string]interface{}),
})
request, _ = http.NewRequest("POST", url, reader)
mockRedisTraceWrapper.EXPECT().WithContext(gomock.Any(), mockRedisClient).Return(mockRedisClient)
mockDb.EXPECT().Query(
gomock.Any(),
"SELECT * FROM schedulers WHERE name = ?",
Expand Down Expand Up @@ -1025,6 +1036,7 @@ forwarders:
_, err = pod.Create(clientset)
Expect(err).NotTo(HaveOccurred())

mockRedisTraceWrapper.EXPECT().WithContext(gomock.Any(), mockRedisClient).Return(mockRedisClient)
url := fmt.Sprintf(
"/scheduler/%s/rooms/%s/address",
namespace,
Expand Down Expand Up @@ -1053,6 +1065,7 @@ forwarders:
_, err = pod.Create(clientset)
Expect(err).NotTo(HaveOccurred())

mockRedisTraceWrapper.EXPECT().WithContext(gomock.Any(), mockRedisClient).Return(mockRedisClient)
namespace := "unexisting-name"
url := fmt.Sprintf(
"/scheduler/%s/rooms/%s/address",
Expand Down
4 changes: 4 additions & 0 deletions config/local.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,7 @@ api:
limitManager:
keyTimeout: 1h
ipv6KubernetesLabelKey: "local.io/ipv6"
addrGetter:
cache:
use: true
expirationInterval: 10m
2 changes: 1 addition & 1 deletion controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"github.com/topfreegames/maestro/reporters"
reportersConstants "github.com/topfreegames/maestro/reporters/constants"
yaml "gopkg.in/yaml.v2"
"k8s.io/api/core/v1"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

"github.com/sirupsen/logrus"
Expand Down
Loading

0 comments on commit 654f25b

Please sign in to comment.