parent
819ee3dadd
commit
274f08d0cf
|
@ -11,6 +11,11 @@ services:
|
|||
environment:
|
||||
POSTGRES_DB: twhelp
|
||||
POSTGRES_PASSWORD: twhelp
|
||||
rmq:
|
||||
image: rabbitmq:3.12.10-alpine
|
||||
environment:
|
||||
RABBITMQ_DEFAULT_USER: twhelp
|
||||
RABBITMQ_DEFAULT_PASS: twhelp
|
||||
|
||||
variables:
|
||||
- &go_image 'golang:1.21'
|
||||
|
@ -30,6 +35,8 @@ steps:
|
|||
environment:
|
||||
TESTS_POSTGRES_CONNECTION_STRING:
|
||||
postgres://postgres:twhelp@database:5432/twhelp?sslmode=disable
|
||||
TESTS_RABBITMQ_CONNECTION_STRING:
|
||||
amqp://twhelp:twhelp@rmq:5672/
|
||||
commands:
|
||||
- go test -race -coverprofile=coverage.txt -covermode=atomic ./...
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ import (
|
|||
"gitea.dwysokinski.me/twhelp/corev3/internal/health"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/health/healthfile"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/port"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermillmsg"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillmsg"
|
||||
"github.com/ThreeDotsLabs/watermill"
|
||||
"github.com/ThreeDotsLabs/watermill-amqp/v2/pkg/amqp"
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
|
|
|
@ -3,7 +3,7 @@ package main
|
|||
import (
|
||||
"log/slog"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermillmsg"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillmsg"
|
||||
"github.com/ThreeDotsLabs/watermill"
|
||||
"github.com/ThreeDotsLabs/watermill-amqp/v2/pkg/amqp"
|
||||
"github.com/urfave/cli/v2"
|
||||
|
|
|
@ -5,7 +5,6 @@ import (
|
|||
"io/fs"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/adapter/internal/bunmodel"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/uptrace/bun"
|
||||
"github.com/uptrace/bun/dbfixture"
|
||||
|
@ -35,18 +34,3 @@ func (f *Fixture) Load(tb TestingTB, ctx context.Context, fsys fs.FS, names ...s
|
|||
tb.Helper()
|
||||
require.NoError(tb, f.f.Load(ctx, fsys, names...))
|
||||
}
|
||||
|
||||
func (f *Fixture) Server(tb TestingTB, id string) domain.Server {
|
||||
tb.Helper()
|
||||
|
||||
row, err := f.f.Row("Server." + id)
|
||||
require.NoError(tb, err)
|
||||
|
||||
s, ok := row.(*bunmodel.Server)
|
||||
require.True(tb, ok)
|
||||
|
||||
converted, err := s.ToDomain()
|
||||
require.NoError(tb, err)
|
||||
|
||||
return converted
|
||||
}
|
||||
|
|
|
@ -48,13 +48,13 @@ func newPostgresConfig(opts ...PostgresOption) *postgresConfig {
|
|||
return cfg
|
||||
}
|
||||
|
||||
func WithTTL(ttlSeconds uint) PostgresOption {
|
||||
func WithPostgresTTL(ttlSeconds uint) PostgresOption {
|
||||
return func(cfg *postgresConfig) {
|
||||
cfg.ttl = ttlSeconds
|
||||
}
|
||||
}
|
||||
|
||||
func WithImage(image string) PostgresOption {
|
||||
func WithPostgresImage(image string) PostgresOption {
|
||||
return func(cfg *postgresConfig) {
|
||||
cfg.repo, cfg.tag = docker.ParseRepositoryTag(image)
|
||||
}
|
||||
|
@ -171,7 +171,7 @@ func (p *Postgres) NewBunDB(tb TestingTB) *bun.DB {
|
|||
}
|
||||
|
||||
func (p *Postgres) Close() error {
|
||||
if p.resource != nil {
|
||||
if p != nil && p.resource != nil {
|
||||
if err := p.resource.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermillmsg"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillmsg"
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
)
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermillmsg"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillmsg"
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
)
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermillmsg"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillmsg"
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
)
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermillmsg"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillmsg"
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
)
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermillmsg"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillmsg"
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
)
|
||||
|
||||
|
|
|
@ -81,6 +81,10 @@ func (a listTribeChangesParamsApplier) apply(q *bun.SelectQuery) *bun.SelectQuer
|
|||
q = q.Order("tc.created_at ASC")
|
||||
case domain.TribeChangeSortCreatedAtDESC:
|
||||
q = q.Order("tc.created_at DESC")
|
||||
case domain.TribeChangeSortIDASC:
|
||||
q = q.Order("tc.id ASC")
|
||||
case domain.TribeChangeSortIDDESC:
|
||||
q = q.Order("tc.id DESC")
|
||||
case domain.TribeChangeSortServerKeyASC:
|
||||
q = q.Order("tc.server_key ASC")
|
||||
case domain.TribeChangeSortServerKeyDESC:
|
||||
|
|
|
@ -205,6 +205,58 @@ func testTribeChangeRepository(t *testing.T, newRepos func(t *testing.T) reposit
|
|||
assert.NotEmpty(t, total)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "OK: sort=[id ASC]",
|
||||
params: func(t *testing.T) domain.ListTribeChangesParams {
|
||||
t.Helper()
|
||||
params := domain.NewListTribeChangesParams()
|
||||
require.NoError(t, params.SetSort([]domain.TribeChangeSort{
|
||||
domain.TribeChangeSortIDASC,
|
||||
}))
|
||||
return params
|
||||
},
|
||||
assertTribeChanges: func(t *testing.T, params domain.ListTribeChangesParams, tribeChanges domain.TribeChanges) {
|
||||
t.Helper()
|
||||
assert.NotEmpty(t, len(tribeChanges))
|
||||
assert.True(t, slices.IsSortedFunc(tribeChanges, func(a, b domain.TribeChange) int {
|
||||
return cmp.Compare(a.ID(), b.ID())
|
||||
}))
|
||||
},
|
||||
assertError: func(t *testing.T, err error) {
|
||||
t.Helper()
|
||||
require.NoError(t, err)
|
||||
},
|
||||
assertTotal: func(t *testing.T, params domain.ListTribeChangesParams, total int) {
|
||||
t.Helper()
|
||||
assert.NotEmpty(t, total)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "OK: sort=[id DESC]",
|
||||
params: func(t *testing.T) domain.ListTribeChangesParams {
|
||||
t.Helper()
|
||||
params := domain.NewListTribeChangesParams()
|
||||
require.NoError(t, params.SetSort([]domain.TribeChangeSort{
|
||||
domain.TribeChangeSortIDDESC,
|
||||
}))
|
||||
return params
|
||||
},
|
||||
assertTribeChanges: func(t *testing.T, params domain.ListTribeChangesParams, tribeChanges domain.TribeChanges) {
|
||||
t.Helper()
|
||||
assert.NotEmpty(t, len(tribeChanges))
|
||||
assert.True(t, slices.IsSortedFunc(tribeChanges, func(a, b domain.TribeChange) int {
|
||||
return cmp.Compare(a.ID(), b.ID()) * -1
|
||||
}))
|
||||
},
|
||||
assertError: func(t *testing.T, err error) {
|
||||
t.Helper()
|
||||
require.NoError(t, err)
|
||||
},
|
||||
assertTotal: func(t *testing.T, params domain.ListTribeChangesParams, total int) {
|
||||
t.Helper()
|
||||
assert.NotEmpty(t, total)
|
||||
},
|
||||
},
|
||||
{
|
||||
name: fmt.Sprintf("OK: serverKeys=[%s]", randTribeChange.ServerKey()),
|
||||
params: func(t *testing.T) domain.ListTribeChangesParams {
|
||||
|
|
|
@ -207,6 +207,8 @@ type TribeChangeSort uint8
|
|||
const (
|
||||
TribeChangeSortCreatedAtASC TribeChangeSort = iota + 1
|
||||
TribeChangeSortCreatedAtDESC
|
||||
TribeChangeSortIDASC
|
||||
TribeChangeSortIDDESC
|
||||
TribeChangeSortServerKeyASC
|
||||
TribeChangeSortServerKeyDESC
|
||||
)
|
||||
|
|
|
@ -3,7 +3,7 @@ package port
|
|||
import (
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/app"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermillmsg"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillmsg"
|
||||
"github.com/ThreeDotsLabs/watermill"
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
)
|
||||
|
|
|
@ -3,7 +3,7 @@ package port
|
|||
import (
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/app"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermillmsg"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillmsg"
|
||||
"github.com/ThreeDotsLabs/watermill"
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
)
|
||||
|
|
|
@ -3,7 +3,7 @@ package port
|
|||
import (
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/app"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermillmsg"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillmsg"
|
||||
"github.com/ThreeDotsLabs/watermill"
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
)
|
||||
|
|
|
@ -3,7 +3,7 @@ package port
|
|||
import (
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/app"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermillmsg"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillmsg"
|
||||
"github.com/ThreeDotsLabs/watermill"
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
)
|
||||
|
|
|
@ -3,7 +3,7 @@ package port
|
|||
import (
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/app"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermillmsg"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillmsg"
|
||||
"github.com/ThreeDotsLabs/watermill"
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
)
|
||||
|
|
597
internal/service/data_sync_test.go
Normal file
597
internal/service/data_sync_test.go
Normal file
|
@ -0,0 +1,597 @@
|
|||
package service_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/fs"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"net/url"
|
||||
"os"
|
||||
"os/signal"
|
||||
"path"
|
||||
"syscall"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/adapter"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/app"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/port"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/tw"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillamqptest"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillmsg"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermilltest"
|
||||
"github.com/ThreeDotsLabs/watermill"
|
||||
"github.com/ThreeDotsLabs/watermill-amqp/v2/pkg/amqp"
|
||||
"github.com/brianvoe/gofakeit/v6"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
// we can't run the subtests in parallel
|
||||
|
||||
//nolint:tparallel
|
||||
func TestDataSync(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
if testing.Short() {
|
||||
t.Skip("skipping long-running test")
|
||||
}
|
||||
|
||||
ctxTimeout, cancel := context.WithTimeout(context.Background(), 150*time.Second)
|
||||
defer cancel()
|
||||
|
||||
ctx, stop := signal.NotifyContext(ctxTimeout, os.Interrupt, syscall.SIGTERM)
|
||||
defer stop()
|
||||
|
||||
// bun
|
||||
db := postgres.NewBunDB(t)
|
||||
|
||||
// watermill
|
||||
marshaler := watermillmsg.JSONMarshaler{NewUUID: watermill.NewUUID}
|
||||
generateExchangeAndRoutingKeyName := func(topic string) string {
|
||||
return topic + "_sync_data"
|
||||
}
|
||||
rmqConn := rabbitMQ.NewConnection(t)
|
||||
nopLogger := watermill.NopLogger{}
|
||||
serverPub, serverSub := watermillamqptest.NewPubSub(
|
||||
t,
|
||||
rmqConn,
|
||||
amqp.GenerateQueueNameTopicNameWithSuffix("_sync_data_server"),
|
||||
generateExchangeAndRoutingKeyName,
|
||||
)
|
||||
playerPub, playerSub := watermillamqptest.NewPubSub(
|
||||
t,
|
||||
rmqConn,
|
||||
amqp.GenerateQueueNameTopicNameWithSuffix("_sync_data_player"),
|
||||
generateExchangeAndRoutingKeyName,
|
||||
)
|
||||
tribePub, tribeSub := watermillamqptest.NewPubSub(
|
||||
t,
|
||||
rmqConn,
|
||||
amqp.GenerateQueueNameTopicNameWithSuffix("_sync_data_tribe"),
|
||||
generateExchangeAndRoutingKeyName,
|
||||
)
|
||||
villagePub, villageSub := watermillamqptest.NewPubSub(
|
||||
t,
|
||||
rmqConn,
|
||||
amqp.GenerateQueueNameTopicNameWithSuffix("_sync_data_village"),
|
||||
generateExchangeAndRoutingKeyName,
|
||||
)
|
||||
|
||||
// events/commands
|
||||
serverCmdSync := gofakeit.UUID()
|
||||
serverEventSynced := gofakeit.UUID()
|
||||
playerEventSynced := gofakeit.UUID()
|
||||
tribeEventSynced := gofakeit.UUID()
|
||||
villageEventSynced := gofakeit.UUID()
|
||||
|
||||
// TW service
|
||||
|
||||
// filesys is set later in this test to os.DirFS("./testdata/syncdata/stage{n}")
|
||||
var filesys fs.FS
|
||||
|
||||
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Method != http.MethodGet {
|
||||
w.WriteHeader(http.StatusMethodNotAllowed)
|
||||
return
|
||||
}
|
||||
|
||||
u, err := url.Parse(r.URL.Query().Get("url"))
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
fname := u.Path + u.Query().Get("func")
|
||||
f, err := filesys.Open(path.Join(u.Host, fname))
|
||||
if err != nil {
|
||||
f, err = filesys.Open(path.Join("default", fname))
|
||||
}
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
defer func() {
|
||||
_ = f.Close()
|
||||
}()
|
||||
|
||||
w.WriteHeader(http.StatusOK)
|
||||
_, _ = io.Copy(w, f)
|
||||
}))
|
||||
t.Cleanup(srv.Close)
|
||||
|
||||
twSvc := adapter.NewTWHTTP(tw.NewClient(tw.WithHTTPClient(&http.Client{
|
||||
Transport: &urlChangerTransport{
|
||||
url: srv.URL,
|
||||
transport: srv.Client().Transport,
|
||||
},
|
||||
})))
|
||||
|
||||
// adapters
|
||||
versionRepo := adapter.NewVersionBunRepository(db)
|
||||
serverRepo := adapter.NewServerBunRepository(db)
|
||||
tribeRepo := adapter.NewTribeBunRepository(db)
|
||||
playerRepo := adapter.NewPlayerBunRepository(db)
|
||||
villageRepo := adapter.NewVillageBunRepository(db)
|
||||
tribeChangeRepo := adapter.NewTribeChangeBunRepository(db)
|
||||
serverPublisher := adapter.NewServerWatermillPublisher(serverPub, marshaler, serverCmdSync, serverEventSynced)
|
||||
playerPublisher := adapter.NewPlayerWatermillPublisher(playerPub, marshaler, playerEventSynced)
|
||||
tribePublisher := adapter.NewTribeWatermillPublisher(tribePub, marshaler, tribeEventSynced)
|
||||
villagePublisher := adapter.NewVillageWatermillPublisher(villagePub, marshaler, villageEventSynced)
|
||||
|
||||
// services
|
||||
versionSvc := app.NewVersionService(versionRepo)
|
||||
serverSvc := app.NewServerService(serverRepo, twSvc, serverPublisher)
|
||||
tribeChangeSvc := app.NewTribeChangeService(tribeChangeRepo)
|
||||
tribeSvc := app.NewTribeService(tribeRepo, twSvc, tribePublisher)
|
||||
playerSvc := app.NewPlayerService(playerRepo, tribeChangeSvc, twSvc, playerPublisher)
|
||||
villageSvc := app.NewVillageService(villageRepo, twSvc, villagePublisher)
|
||||
dataSyncSvc := app.NewDataSyncService(versionSvc, serverSvc, serverPublisher, nil)
|
||||
|
||||
watermilltest.RunRouterWithContext(
|
||||
t,
|
||||
ctx,
|
||||
port.NewServerWatermillConsumer(
|
||||
serverSvc,
|
||||
serverSub,
|
||||
nopLogger,
|
||||
marshaler,
|
||||
serverCmdSync,
|
||||
serverEventSynced,
|
||||
tribeEventSynced,
|
||||
playerEventSynced,
|
||||
villageEventSynced,
|
||||
"",
|
||||
),
|
||||
port.NewTribeWatermillConsumer(tribeSvc, tribeSub, nopLogger, marshaler, serverEventSynced, villageEventSynced),
|
||||
port.NewPlayerWatermillConsumer(playerSvc, playerSub, nopLogger, marshaler, serverEventSynced),
|
||||
port.NewVillageWatermillConsumer(villageSvc, villageSub, nopLogger, marshaler, serverEventSynced),
|
||||
)
|
||||
|
||||
for _, stage := range []uint{1, 2} {
|
||||
stage := stage
|
||||
|
||||
t.Run(fmt.Sprintf("stage %d", stage), func(t *testing.T) {
|
||||
filesys = os.DirFS(fmt.Sprintf("./testdata/syncdata/stage%d", stage))
|
||||
|
||||
require.NoError(t, dataSyncSvc.TriggerDataSync(ctx))
|
||||
|
||||
var expectedServers []map[string]any
|
||||
readJSONFile(t, filesys, path.Join("expected", "servers.json"), &expectedServers)
|
||||
assert.EventuallyWithTf(t, func(collect *assert.CollectT) {
|
||||
require.NoError(collect, ctx.Err())
|
||||
|
||||
listParams := domain.NewListServersParams()
|
||||
require.NoError(collect, listParams.SetSort([]domain.ServerSort{
|
||||
domain.ServerSortKeyASC,
|
||||
}))
|
||||
require.NoError(collect, listParams.SetSpecial(domain.NullBool{
|
||||
Value: false,
|
||||
Valid: true,
|
||||
}))
|
||||
require.NoError(collect, listParams.SetLimit(domain.ServerListMaxLimit))
|
||||
|
||||
allServers := make(domain.Servers, 0, len(expectedServers))
|
||||
|
||||
for {
|
||||
servers, err := serverRepo.List(ctx, listParams)
|
||||
require.NoError(collect, err)
|
||||
|
||||
if len(servers) == 0 {
|
||||
break
|
||||
}
|
||||
|
||||
allServers = append(allServers, servers...)
|
||||
|
||||
require.NoError(collect, listParams.SetKeyGT(domain.NullString{
|
||||
Value: servers[len(servers)-1].Key(),
|
||||
Valid: true,
|
||||
}))
|
||||
}
|
||||
|
||||
if !assert.Len(collect, allServers, len(expectedServers)) {
|
||||
return
|
||||
}
|
||||
for i, expected := range expectedServers {
|
||||
actual := allServers[i]
|
||||
msg := fmt.Sprintf("Key=%s", expected["Key"])
|
||||
|
||||
assert.Equal(collect, expected["Key"], actual.Key(), msg)
|
||||
assert.Equal(collect, expected["URL"], actual.URL().String(), msg)
|
||||
assert.Equal(collect, expected["Open"], actual.Open(), msg)
|
||||
assert.Equal(collect, expected["VersionCode"], actual.VersionCode(), msg)
|
||||
assert.EqualValues(collect, expected["NumPlayers"], actual.NumPlayers(), msg)
|
||||
assert.EqualValues(collect, expected["NumTribes"], actual.NumTribes(), msg)
|
||||
assert.EqualValues(collect, expected["NumVillages"], actual.NumVillages(), msg)
|
||||
assert.EqualValues(collect, expected["NumPlayerVillages"], actual.NumPlayerVillages(), msg)
|
||||
assert.EqualValues(collect, expected["NumBonusVillages"], actual.NumBonusVillages(), msg)
|
||||
assert.EqualValues(
|
||||
collect,
|
||||
expected["NumBarbarianVillages"],
|
||||
actual.NumBarbarianVillages(),
|
||||
"Key=%s",
|
||||
expected["Key"],
|
||||
)
|
||||
assert.WithinDuration(collect, time.Now(), actual.PlayerDataSyncedAt(), time.Minute, msg)
|
||||
assert.WithinDuration(collect, time.Now(), actual.TribeDataSyncedAt(), time.Minute, msg)
|
||||
assert.WithinDuration(collect, time.Now(), actual.VillageDataSyncedAt(), time.Minute, msg)
|
||||
assert.JSONEqf(
|
||||
collect,
|
||||
string(marshalJSON(collect, expected["Config"])),
|
||||
string(marshalJSON(collect, serverConfigToMap(actual.Config()))),
|
||||
"Key=%s",
|
||||
expected["Key"],
|
||||
)
|
||||
assert.JSONEq(
|
||||
collect,
|
||||
string(marshalJSON(collect, expected["BuildingInfo"])),
|
||||
string(marshalJSON(collect, buildingInfoToMap(actual.BuildingInfo()))),
|
||||
msg,
|
||||
)
|
||||
assert.JSONEq(
|
||||
collect,
|
||||
string(marshalJSON(collect, expected["UnitInfo"])),
|
||||
string(marshalJSON(collect, unitInfoToMap(actual.UnitInfo()))),
|
||||
msg,
|
||||
)
|
||||
}
|
||||
}, 60*time.Second, time.Second, "servers")
|
||||
|
||||
var expectedTribes []map[string]any
|
||||
readJSONFile(t, filesys, path.Join("expected", "tribes.json"), &expectedTribes)
|
||||
assert.EventuallyWithT(t, func(collect *assert.CollectT) {
|
||||
require.NoError(collect, ctx.Err())
|
||||
|
||||
listParams := domain.NewListTribesParams()
|
||||
require.NoError(collect, listParams.SetSort([]domain.TribeSort{
|
||||
domain.TribeSortServerKeyASC,
|
||||
domain.TribeSortIDASC,
|
||||
}))
|
||||
require.NoError(collect, listParams.SetLimit(domain.TribeListMaxLimit))
|
||||
|
||||
allTribes := make(domain.Tribes, 0, len(expectedTribes))
|
||||
|
||||
for {
|
||||
tribes, err := tribeRepo.List(ctx, listParams)
|
||||
require.NoError(collect, err)
|
||||
|
||||
if len(tribes) == 0 {
|
||||
break
|
||||
}
|
||||
|
||||
allTribes = append(allTribes, tribes...)
|
||||
|
||||
require.NoError(collect, listParams.SetIDGT(domain.NullInt{
|
||||
Value: tribes[len(tribes)-1].ID(),
|
||||
Valid: true,
|
||||
}))
|
||||
}
|
||||
|
||||
if !assert.Len(collect, allTribes, len(expectedTribes)) {
|
||||
return
|
||||
}
|
||||
for i, expected := range expectedTribes {
|
||||
actual := allTribes[i]
|
||||
msg := fmt.Sprintf("ID=%.0f,ServerKey=%s", expected["ID"], expected["ServerKey"])
|
||||
|
||||
assert.EqualValues(collect, expected["ID"], actual.ID(), msg)
|
||||
assert.Equal(collect, expected["ServerKey"], actual.ServerKey(), msg)
|
||||
assert.Equal(collect, expected["Name"], actual.Name(), msg)
|
||||
assert.Equal(collect, expected["Tag"], actual.Tag(), msg)
|
||||
assert.EqualValues(collect, expected["NumMembers"], actual.NumMembers(), msg)
|
||||
assert.EqualValues(collect, expected["NumVillages"], actual.NumVillages(), msg)
|
||||
assert.EqualValues(collect, expected["Points"], actual.Points(), msg)
|
||||
assert.EqualValues(collect, expected["AllPoints"], actual.AllPoints(), msg)
|
||||
assert.EqualValues(collect, expected["Rank"], actual.Rank(), msg)
|
||||
assert.EqualValues(collect, expected["RankAtt"], actual.OD().RankAtt(), msg)
|
||||
assert.EqualValues(collect, expected["ScoreAtt"], actual.OD().ScoreAtt(), msg)
|
||||
assert.EqualValues(collect, expected["RankDef"], actual.OD().RankDef(), msg)
|
||||
assert.EqualValues(collect, expected["ScoreDef"], actual.OD().ScoreDef(), msg)
|
||||
assert.EqualValues(collect, expected["RankSup"], actual.OD().RankSup(), msg)
|
||||
assert.EqualValues(collect, expected["ScoreSup"], actual.OD().ScoreSup(), msg)
|
||||
assert.EqualValues(collect, expected["RankTotal"], actual.OD().RankTotal(), msg)
|
||||
assert.EqualValues(collect, expected["ScoreTotal"], actual.OD().ScoreTotal(), msg)
|
||||
assert.Equal(collect, expected["ProfileURL"], actual.ProfileURL().String(), msg)
|
||||
assert.EqualValues(collect, expected["Dominance"], actual.Dominance(), msg)
|
||||
assert.EqualValues(collect, expected["BestRank"], actual.BestRank(), msg)
|
||||
assert.NotEmpty(collect, actual.BestRankAt(), msg)
|
||||
assert.EqualValues(collect, expected["MostPoints"], actual.MostPoints(), msg)
|
||||
assert.NotEmpty(collect, actual.MostPointsAt(), msg)
|
||||
assert.EqualValues(collect, expected["MostVillages"], actual.MostVillages(), msg)
|
||||
assert.NotEmpty(collect, actual.MostVillagesAt(), msg)
|
||||
if deletedAt, ok := expected["DeletedAt"].(string); ok && (time.Time{}).Format(time.RFC3339) != deletedAt {
|
||||
assert.NotEmpty(collect, actual.DeletedAt(), msg)
|
||||
} else {
|
||||
assert.Empty(collect, actual.DeletedAt(), msg)
|
||||
}
|
||||
}
|
||||
}, 60*time.Second, time.Second, "tribes")
|
||||
|
||||
var expectedPlayers []map[string]any
|
||||
readJSONFile(t, filesys, path.Join("expected", "players.json"), &expectedPlayers)
|
||||
assert.EventuallyWithT(t, func(collect *assert.CollectT) {
|
||||
require.NoError(collect, ctx.Err())
|
||||
|
||||
listParams := domain.NewListPlayersParams()
|
||||
require.NoError(collect, listParams.SetSort([]domain.PlayerSort{
|
||||
domain.PlayerSortServerKeyASC,
|
||||
domain.PlayerSortIDASC,
|
||||
}))
|
||||
require.NoError(collect, listParams.SetLimit(domain.PlayerListMaxLimit))
|
||||
|
||||
allPlayers := make(domain.Players, 0, len(expectedPlayers))
|
||||
|
||||
for {
|
||||
players, err := playerRepo.List(ctx, listParams)
|
||||
require.NoError(collect, err)
|
||||
|
||||
if len(players) == 0 {
|
||||
break
|
||||
}
|
||||
|
||||
allPlayers = append(allPlayers, players...)
|
||||
|
||||
require.NoError(collect, listParams.SetIDGT(domain.NullInt{
|
||||
Value: players[len(players)-1].ID(),
|
||||
Valid: true,
|
||||
}))
|
||||
}
|
||||
|
||||
if !assert.Len(collect, allPlayers, len(expectedPlayers)) {
|
||||
return
|
||||
}
|
||||
for i, expected := range expectedPlayers {
|
||||
actual := allPlayers[i]
|
||||
msg := fmt.Sprintf("ID=%.0f,ServerKey=%s", expected["ID"], expected["ServerKey"])
|
||||
|
||||
assert.EqualValues(collect, expected["ID"], actual.ID(), msg)
|
||||
assert.Equal(collect, expected["ServerKey"], actual.ServerKey(), msg)
|
||||
assert.Equal(collect, expected["Name"], actual.Name(), msg)
|
||||
assert.EqualValues(collect, expected["NumVillages"], actual.NumVillages(), msg)
|
||||
assert.EqualValues(collect, expected["Points"], actual.Points(), msg)
|
||||
assert.EqualValues(collect, expected["Rank"], actual.Rank(), msg)
|
||||
assert.EqualValues(collect, expected["TribeID"], actual.TribeID(), msg)
|
||||
assert.EqualValues(collect, expected["RankAtt"], actual.OD().RankAtt(), msg)
|
||||
assert.EqualValues(collect, expected["ScoreAtt"], actual.OD().ScoreAtt(), msg)
|
||||
assert.EqualValues(collect, expected["RankDef"], actual.OD().RankDef(), msg)
|
||||
assert.EqualValues(collect, expected["ScoreDef"], actual.OD().ScoreDef(), msg)
|
||||
assert.EqualValues(collect, expected["RankSup"], actual.OD().RankSup(), msg)
|
||||
assert.EqualValues(collect, expected["ScoreSup"], actual.OD().ScoreSup(), msg)
|
||||
assert.EqualValues(collect, expected["RankTotal"], actual.OD().RankTotal(), msg)
|
||||
assert.EqualValues(collect, expected["ScoreTotal"], actual.OD().ScoreTotal(), msg)
|
||||
assert.Equal(collect, expected["ProfileURL"], actual.ProfileURL().String(), msg)
|
||||
assert.EqualValues(collect, expected["BestRank"], actual.BestRank(), msg)
|
||||
assert.NotEmpty(collect, actual.BestRankAt(), msg)
|
||||
assert.EqualValues(collect, expected["MostPoints"], actual.MostPoints(), msg)
|
||||
assert.NotEmpty(collect, actual.MostPointsAt(), msg)
|
||||
assert.EqualValues(collect, expected["MostVillages"], actual.MostVillages(), msg)
|
||||
assert.NotEmpty(collect, actual.MostVillagesAt(), msg)
|
||||
if deletedAt, ok := expected["DeletedAt"].(string); ok && (time.Time{}).Format(time.RFC3339) != deletedAt {
|
||||
assert.NotEmpty(collect, actual.DeletedAt(), msg)
|
||||
} else {
|
||||
assert.Empty(collect, actual.DeletedAt(), msg)
|
||||
}
|
||||
}
|
||||
}, 60*time.Second, time.Second, "players")
|
||||
|
||||
var expectedVillages []map[string]any
|
||||
readJSONFile(t, filesys, path.Join("expected", "villages.json"), &expectedVillages)
|
||||
assert.EventuallyWithT(t, func(collect *assert.CollectT) {
|
||||
require.NoError(collect, ctx.Err())
|
||||
|
||||
listParams := domain.NewListVillagesParams()
|
||||
require.NoError(collect, listParams.SetSort([]domain.VillageSort{
|
||||
domain.VillageSortServerKeyASC,
|
||||
domain.VillageSortIDASC,
|
||||
}))
|
||||
require.NoError(collect, listParams.SetLimit(domain.VillageListMaxLimit))
|
||||
|
||||
allVillages := make(domain.Villages, 0, len(expectedVillages))
|
||||
|
||||
for {
|
||||
villages, err := villageRepo.List(ctx, listParams)
|
||||
require.NoError(collect, err)
|
||||
|
||||
if len(villages) == 0 {
|
||||
break
|
||||
}
|
||||
|
||||
allVillages = append(allVillages, villages...)
|
||||
|
||||
require.NoError(collect, listParams.SetIDGT(domain.NullInt{
|
||||
Value: villages[len(villages)-1].ID(),
|
||||
Valid: true,
|
||||
}))
|
||||
}
|
||||
|
||||
if !assert.Len(collect, allVillages, len(expectedVillages)) {
|
||||
return
|
||||
}
|
||||
for i, expected := range expectedVillages {
|
||||
actual := allVillages[i]
|
||||
msg := fmt.Sprintf("ID=%.0f,ServerKey=%s", expected["ID"], expected["ServerKey"])
|
||||
|
||||
assert.EqualValues(collect, expected["ID"], actual.ID(), msg)
|
||||
assert.Equal(collect, expected["ServerKey"], actual.ServerKey(), msg)
|
||||
assert.Equal(collect, expected["Name"], actual.Name(), msg)
|
||||
assert.EqualValues(collect, expected["Points"], actual.Points(), msg)
|
||||
assert.EqualValues(collect, expected["X"], actual.X(), msg)
|
||||
assert.EqualValues(collect, expected["Y"], actual.Y(), msg)
|
||||
assert.Equal(collect, expected["Continent"], actual.Continent(), msg)
|
||||
assert.EqualValues(collect, expected["Bonus"], actual.Bonus(), msg)
|
||||
assert.EqualValues(collect, expected["PlayerID"], actual.PlayerID(), msg)
|
||||
assert.Equal(collect, expected["ProfileURL"], actual.ProfileURL().String(), msg)
|
||||
}
|
||||
}, 60*time.Second, time.Second, "villages")
|
||||
|
||||
var expectedTribeChanges []map[string]any
|
||||
readJSONFile(t, filesys, path.Join("expected", "tribe-changes.json"), &expectedTribeChanges)
|
||||
assert.EventuallyWithT(t, func(collect *assert.CollectT) {
|
||||
require.NoError(collect, ctx.Err())
|
||||
|
||||
listParams := domain.NewListTribeChangesParams()
|
||||
require.NoError(collect, listParams.SetSort([]domain.TribeChangeSort{
|
||||
domain.TribeChangeSortIDASC,
|
||||
}))
|
||||
require.NoError(collect, listParams.SetLimit(domain.TribeChangeListMaxLimit))
|
||||
|
||||
allTribeChanges := make(domain.TribeChanges, 0, len(expectedTribeChanges))
|
||||
|
||||
for {
|
||||
tcs, err := tribeChangeRepo.List(ctx, listParams)
|
||||
require.NoError(collect, err)
|
||||
|
||||
if len(tcs) == 0 {
|
||||
break
|
||||
}
|
||||
|
||||
allTribeChanges = append(allTribeChanges, tcs...)
|
||||
|
||||
require.NoError(collect, listParams.SetOffset(listParams.Offset()+domain.TribeChangeListMaxLimit))
|
||||
}
|
||||
|
||||
if !assert.Len(collect, allTribeChanges, len(expectedTribeChanges)) {
|
||||
return
|
||||
}
|
||||
for i, expected := range expectedTribeChanges {
|
||||
actual := allTribeChanges[i]
|
||||
msg := fmt.Sprintf("ID=%.0f,ServerKey=%s", expected["ID"], expected["ServerKey"])
|
||||
|
||||
assert.EqualValues(collect, expected["ID"], actual.ID(), msg)
|
||||
assert.Equal(collect, expected["ServerKey"], actual.ServerKey(), msg)
|
||||
assert.EqualValues(collect, expected["PlayerID"], actual.PlayerID(), msg)
|
||||
assert.EqualValues(collect, expected["OldTribeID"], actual.OldTribeID(), msg)
|
||||
assert.EqualValues(collect, expected["NewTribeID"], actual.NewTribeID(), msg)
|
||||
}
|
||||
}, 60*time.Second, time.Second, "tribe changes")
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
type urlChangerTransport struct {
|
||||
url string
|
||||
transport http.RoundTripper
|
||||
}
|
||||
|
||||
func (t *urlChangerTransport) RoundTrip(r *http.Request) (*http.Response, error) {
|
||||
u, err := url.Parse(t.url)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
u.RawQuery = url.Values{
|
||||
"url": []string{r.URL.String()},
|
||||
}.Encode()
|
||||
|
||||
r2 := r.Clone(r.Context())
|
||||
r2.URL = u
|
||||
|
||||
return t.transport.RoundTrip(r2)
|
||||
}
|
||||
|
||||
func readJSONFile(tb testing.TB, filesys fs.FS, name string, v any) {
|
||||
tb.Helper()
|
||||
|
||||
f, err := filesys.Open(name)
|
||||
require.NoError(tb, err)
|
||||
defer func() {
|
||||
_ = f.Close()
|
||||
}()
|
||||
|
||||
require.NoError(tb, json.NewDecoder(f).Decode(v))
|
||||
}
|
||||
|
||||
func serverConfigToMap(cfg domain.ServerConfig) map[string]any {
|
||||
return map[string]any{
|
||||
"Speed": cfg.Speed(),
|
||||
"UnitSpeed": cfg.UnitSpeed(),
|
||||
"Moral": cfg.Moral(),
|
||||
"Build": cfg.Build(),
|
||||
"Misc": cfg.Misc(),
|
||||
"Commands": cfg.Commands(),
|
||||
"Newbie": cfg.Newbie(),
|
||||
"Game": cfg.Game(),
|
||||
"Buildings": cfg.Buildings(),
|
||||
"Snob": cfg.Snob(),
|
||||
"Ally": cfg.Ally(),
|
||||
"Coord": cfg.Coord(),
|
||||
"Sitter": cfg.Sitter(),
|
||||
"Sleep": cfg.Sleep(),
|
||||
"Night": cfg.Night(),
|
||||
"Win": cfg.Win(),
|
||||
}
|
||||
}
|
||||
|
||||
func unitInfoToMap(info domain.UnitInfo) map[string]any {
|
||||
return map[string]any{
|
||||
"Spear": info.Spear(),
|
||||
"Sword": info.Sword(),
|
||||
"Axe": info.Axe(),
|
||||
"Archer": info.Archer(),
|
||||
"Spy": info.Spy(),
|
||||
"Light": info.Light(),
|
||||
"Marcher": info.Marcher(),
|
||||
"Heavy": info.Heavy(),
|
||||
"Ram": info.Ram(),
|
||||
"Catapult": info.Catapult(),
|
||||
"Knight": info.Knight(),
|
||||
"Snob": info.Snob(),
|
||||
"Militia": info.Militia(),
|
||||
}
|
||||
}
|
||||
|
||||
func buildingInfoToMap(info domain.BuildingInfo) map[string]any {
|
||||
return map[string]any{
|
||||
"Main": info.Main(),
|
||||
"Barracks": info.Barracks(),
|
||||
"Stable": info.Stable(),
|
||||
"Garage": info.Garage(),
|
||||
"Watchtower": info.Watchtower(),
|
||||
"Snob": info.Snob(),
|
||||
"Smith": info.Smith(),
|
||||
"Place": info.Place(),
|
||||
"Statue": info.Statue(),
|
||||
"Market": info.Market(),
|
||||
"Wood": info.Wood(),
|
||||
"Stone": info.Stone(),
|
||||
"Iron": info.Iron(),
|
||||
"Farm": info.Farm(),
|
||||
"Storage": info.Storage(),
|
||||
"Hide": info.Hide(),
|
||||
"Wall": info.Wall(),
|
||||
}
|
||||
}
|
||||
|
||||
func marshalJSON(tb require.TestingT, v any) []byte {
|
||||
if h, ok := tb.(interface {
|
||||
Helper()
|
||||
}); ok {
|
||||
h.Helper()
|
||||
}
|
||||
b, err := json.Marshal(v)
|
||||
require.NoError(tb, err)
|
||||
return b
|
||||
}
|
56
internal/service/service_test.go
Normal file
56
internal/service/service_test.go
Normal file
|
@ -0,0 +1,56 @@
|
|||
package service_test
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"log"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/adapter/adaptertest"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillamqptest"
|
||||
"github.com/ory/dockertest/v3"
|
||||
)
|
||||
|
||||
var (
|
||||
postgres *adaptertest.Postgres
|
||||
rabbitMQ *watermillamqptest.RabbitMQ
|
||||
)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
os.Exit(testMainWrapper(m))
|
||||
}
|
||||
|
||||
func testMainWrapper(m *testing.M) int {
|
||||
// https://github.com/golang/go/blob/7cfa7d69259590319524c3715df4a39b39924bc3/src/testing/testing.go#L224
|
||||
flag.Parse()
|
||||
|
||||
if testing.Short() {
|
||||
return m.Run()
|
||||
}
|
||||
|
||||
pool, err := dockertest.NewPool("")
|
||||
if err != nil {
|
||||
log.Println("couldn't construct dockertest.Pool:", err)
|
||||
return 1
|
||||
}
|
||||
|
||||
postgres, err = adaptertest.NewPostgres(pool, adaptertest.WithPostgresTTL(180))
|
||||
if err != nil {
|
||||
log.Println("couldn't construct adaptertest.Postgres:", err)
|
||||
return 1
|
||||
}
|
||||
defer func() {
|
||||
_ = postgres.Close()
|
||||
}()
|
||||
|
||||
rabbitMQ, err = watermillamqptest.NewRabbitMQ(pool, watermillamqptest.WithRabbitMQTTL(180))
|
||||
if err != nil {
|
||||
log.Println("couldn't construct watermillamqptest.RabbitMQ:", err)
|
||||
return 1
|
||||
}
|
||||
defer func() {
|
||||
_ = rabbitMQ.Close()
|
||||
}()
|
||||
|
||||
return m.Run()
|
||||
}
|
1
internal/service/testdata/syncdata/stage1/default/backend/get_servers.php
vendored
Normal file
1
internal/service/testdata/syncdata/stage1/default/backend/get_servers.php
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
a:0:{}
|
1
internal/service/testdata/syncdata/stage1/expected/players.json
vendored
Normal file
1
internal/service/testdata/syncdata/stage1/expected/players.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1
internal/service/testdata/syncdata/stage1/expected/servers.json
vendored
Normal file
1
internal/service/testdata/syncdata/stage1/expected/servers.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1
internal/service/testdata/syncdata/stage1/expected/tribe-changes.json
vendored
Normal file
1
internal/service/testdata/syncdata/stage1/expected/tribe-changes.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1
internal/service/testdata/syncdata/stage1/expected/tribes.json
vendored
Normal file
1
internal/service/testdata/syncdata/stage1/expected/tribes.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1
internal/service/testdata/syncdata/stage1/expected/villages.json
vendored
Normal file
1
internal/service/testdata/syncdata/stage1/expected/villages.json
vendored
Normal file
File diff suppressed because one or more lines are too long
227
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/interface.phpget_building_info
vendored
Normal file
227
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/interface.phpget_building_info
vendored
Normal file
|
@ -0,0 +1,227 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<config>
|
||||
<main>
|
||||
<max_level>30</max_level>
|
||||
<min_level>1</min_level>
|
||||
<wood>90</wood>
|
||||
<stone>80</stone>
|
||||
<iron>70</iron>
|
||||
<pop>5</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>900</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</main>
|
||||
<barracks>
|
||||
<max_level>25</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>200</wood>
|
||||
<stone>170</stone>
|
||||
<iron>90</iron>
|
||||
<pop>7</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.28</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>1800</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</barracks>
|
||||
<stable>
|
||||
<max_level>20</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>270</wood>
|
||||
<stone>240</stone>
|
||||
<iron>260</iron>
|
||||
<pop>8</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.28</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>6000</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</stable>
|
||||
<garage>
|
||||
<max_level>15</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>300</wood>
|
||||
<stone>240</stone>
|
||||
<iron>260</iron>
|
||||
<pop>8</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.28</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>6000</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</garage>
|
||||
<snob>
|
||||
<max_level>1</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>15000</wood>
|
||||
<stone>25000</stone>
|
||||
<iron>10000</iron>
|
||||
<pop>80</pop>
|
||||
<wood_factor>2</wood_factor>
|
||||
<stone_factor>2</stone_factor>
|
||||
<iron_factor>2</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>586800</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</snob>
|
||||
<smith>
|
||||
<max_level>20</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>220</wood>
|
||||
<stone>180</stone>
|
||||
<iron>240</iron>
|
||||
<pop>20</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>6000</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</smith>
|
||||
<place>
|
||||
<max_level>1</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>10</wood>
|
||||
<stone>40</stone>
|
||||
<iron>30</iron>
|
||||
<pop>0</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>10860</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</place>
|
||||
<statue>
|
||||
<max_level>1</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>220</wood>
|
||||
<stone>220</stone>
|
||||
<iron>220</iron>
|
||||
<pop>10</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>1500</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</statue>
|
||||
<market>
|
||||
<max_level>25</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>100</wood>
|
||||
<stone>100</stone>
|
||||
<iron>100</iron>
|
||||
<pop>20</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>2700</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</market>
|
||||
<wood>
|
||||
<max_level>30</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>50</wood>
|
||||
<stone>60</stone>
|
||||
<iron>40</iron>
|
||||
<pop>5</pop>
|
||||
<wood_factor>1.25</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.245</iron_factor>
|
||||
<pop_factor>1.155</pop_factor>
|
||||
<build_time>900</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</wood>
|
||||
<stone>
|
||||
<max_level>30</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>65</wood>
|
||||
<stone>50</stone>
|
||||
<iron>40</iron>
|
||||
<pop>10</pop>
|
||||
<wood_factor>1.27</wood_factor>
|
||||
<stone_factor>1.265</stone_factor>
|
||||
<iron_factor>1.24</iron_factor>
|
||||
<pop_factor>1.14</pop_factor>
|
||||
<build_time>900</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</stone>
|
||||
<iron>
|
||||
<max_level>30</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>75</wood>
|
||||
<stone>65</stone>
|
||||
<iron>70</iron>
|
||||
<pop>10</pop>
|
||||
<wood_factor>1.252</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.24</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>1080</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</iron>
|
||||
<farm>
|
||||
<max_level>30</max_level>
|
||||
<min_level>1</min_level>
|
||||
<wood>45</wood>
|
||||
<stone>40</stone>
|
||||
<iron>30</iron>
|
||||
<pop>0</pop>
|
||||
<wood_factor>1.3</wood_factor>
|
||||
<stone_factor>1.32</stone_factor>
|
||||
<iron_factor>1.29</iron_factor>
|
||||
<pop_factor>1</pop_factor>
|
||||
<build_time>1200</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</farm>
|
||||
<storage>
|
||||
<max_level>30</max_level>
|
||||
<min_level>1</min_level>
|
||||
<wood>60</wood>
|
||||
<stone>50</stone>
|
||||
<iron>40</iron>
|
||||
<pop>0</pop>
|
||||
<wood_factor>1.265</wood_factor>
|
||||
<stone_factor>1.27</stone_factor>
|
||||
<iron_factor>1.245</iron_factor>
|
||||
<pop_factor>1.15</pop_factor>
|
||||
<build_time>1020</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</storage>
|
||||
<hide>
|
||||
<max_level>10</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>50</wood>
|
||||
<stone>60</stone>
|
||||
<iron>50</iron>
|
||||
<pop>2</pop>
|
||||
<wood_factor>1.25</wood_factor>
|
||||
<stone_factor>1.25</stone_factor>
|
||||
<iron_factor>1.25</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>1800</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</hide>
|
||||
<wall>
|
||||
<max_level>20</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>50</wood>
|
||||
<stone>100</stone>
|
||||
<iron>20</iron>
|
||||
<pop>5</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>3600</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</wall>
|
||||
</config>
|
127
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/interface.phpget_config
vendored
Normal file
127
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/interface.phpget_config
vendored
Normal file
|
@ -0,0 +1,127 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<config>
|
||||
|
||||
<speed>1</speed>
|
||||
<unit_speed>1</unit_speed>
|
||||
<moral>1</moral>
|
||||
<build>
|
||||
<destroy>1</destroy>
|
||||
</build>
|
||||
<misc>
|
||||
<kill_ranking>2</kill_ranking>
|
||||
<tutorial>5</tutorial>
|
||||
<trade_cancel_time>300</trade_cancel_time>
|
||||
</misc>
|
||||
<commands>
|
||||
<millis_arrival>1</millis_arrival>
|
||||
<command_cancel_time>600</command_cancel_time>
|
||||
</commands>
|
||||
<newbie>
|
||||
<days>7</days>
|
||||
<ratio_days>60</ratio_days>
|
||||
<ratio>20</ratio>
|
||||
<removeNewbieVillages>1</removeNewbieVillages>
|
||||
</newbie>
|
||||
<game>
|
||||
<buildtime_formula>2</buildtime_formula>
|
||||
<knight>3</knight>
|
||||
<knight_new_items></knight_new_items>
|
||||
<archer>1</archer>
|
||||
<tech>2</tech>
|
||||
<farm_limit>0</farm_limit>
|
||||
<church>0</church>
|
||||
<watchtower>0</watchtower>
|
||||
<stronghold>1</stronghold>
|
||||
<fake_limit>1</fake_limit>
|
||||
<barbarian_rise>0.003</barbarian_rise>
|
||||
<barbarian_shrink>1</barbarian_shrink>
|
||||
<barbarian_max_points>2000</barbarian_max_points>
|
||||
<scavenging>1</scavenging>
|
||||
<hauls>1</hauls>
|
||||
<hauls_base>1000</hauls_base>
|
||||
<hauls_max>100000</hauls_max>
|
||||
<base_production>30</base_production>
|
||||
<event>10</event>
|
||||
<suppress_events>0</suppress_events>
|
||||
</game>
|
||||
<buildings>
|
||||
<custom_main>-1</custom_main>
|
||||
<custom_farm>-1</custom_farm>
|
||||
<custom_storage>-1</custom_storage>
|
||||
<custom_place>-1</custom_place>
|
||||
<custom_barracks>-1</custom_barracks>
|
||||
<custom_church>-1</custom_church>
|
||||
<custom_smith>-1</custom_smith>
|
||||
<custom_wood>-1</custom_wood>
|
||||
<custom_stone>-1</custom_stone>
|
||||
<custom_iron>-1</custom_iron>
|
||||
<custom_market>-1</custom_market>
|
||||
<custom_stable>-1</custom_stable>
|
||||
<custom_wall>-1</custom_wall>
|
||||
<custom_garage>-1</custom_garage>
|
||||
<custom_hide>-1</custom_hide>
|
||||
<custom_snob>-1</custom_snob>
|
||||
<custom_statue>-1</custom_statue>
|
||||
<custom_watchtower>-1</custom_watchtower>
|
||||
</buildings>
|
||||
<snob>
|
||||
<gold>1</gold>
|
||||
<cheap_rebuild>0</cheap_rebuild>
|
||||
<rise>2</rise>
|
||||
<max_dist>1000</max_dist>
|
||||
<factor>0.9</factor>
|
||||
<coin_wood>28000</coin_wood>
|
||||
<coin_stone>30000</coin_stone>
|
||||
<coin_iron>25000</coin_iron>
|
||||
<no_barb_conquer></no_barb_conquer>
|
||||
</snob>
|
||||
<ally>
|
||||
<no_harm>0</no_harm>
|
||||
<no_other_support>1</no_other_support>
|
||||
<no_other_support_type>0</no_other_support_type>
|
||||
<allytime_support>0</allytime_support>
|
||||
<no_leave>0</no_leave>
|
||||
<no_join>0</no_join>
|
||||
<limit>50</limit>
|
||||
<fixed_allies>0</fixed_allies>
|
||||
<wars_member_requirement>5</wars_member_requirement>
|
||||
<wars_points_requirement>15000</wars_points_requirement>
|
||||
<wars_autoaccept_days>7</wars_autoaccept_days>
|
||||
<levels>1</levels>
|
||||
<xp_requirements>v1</xp_requirements>
|
||||
</ally>
|
||||
<coord>
|
||||
<map_size>1000</map_size>
|
||||
<func>4</func>
|
||||
<empty_villages>70</empty_villages>
|
||||
<bonus_villages>10</bonus_villages>
|
||||
<inner>8287</inner>
|
||||
<select_start>1</select_start>
|
||||
<village_move_wait>336</village_move_wait>
|
||||
<noble_restart>1</noble_restart>
|
||||
<start_villages>1</start_villages>
|
||||
</coord>
|
||||
<sitter>
|
||||
<allow>1</allow>
|
||||
</sitter>
|
||||
<sleep>
|
||||
<active>0</active>
|
||||
<delay>60</delay>
|
||||
<min>6</min>
|
||||
<max>10</max>
|
||||
<min_awake>12</min_awake>
|
||||
<max_awake>36</max_awake>
|
||||
<warn_time>10</warn_time>
|
||||
</sleep>
|
||||
<night>
|
||||
<active>1</active>
|
||||
<start_hour>23</start_hour>
|
||||
<end_hour>8</end_hour>
|
||||
<def_factor>2</def_factor>
|
||||
<duration>14</duration>
|
||||
</night>
|
||||
<win>
|
||||
<check>5</check>
|
||||
</win>
|
||||
|
||||
</config>
|
133
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/interface.phpget_unit_info
vendored
Normal file
133
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/interface.phpget_unit_info
vendored
Normal file
|
@ -0,0 +1,133 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<config>
|
||||
<spear>
|
||||
<build_time>1020</build_time>
|
||||
<pop>1</pop>
|
||||
<speed>18</speed>
|
||||
<attack>10</attack>
|
||||
<defense>15</defense>
|
||||
<defense_cavalry>45</defense_cavalry>
|
||||
<defense_archer>20</defense_archer>
|
||||
<carry>25</carry>
|
||||
</spear>
|
||||
<sword>
|
||||
<build_time>1500</build_time>
|
||||
<pop>1</pop>
|
||||
<speed>22</speed>
|
||||
<attack>25</attack>
|
||||
<defense>50</defense>
|
||||
<defense_cavalry>15</defense_cavalry>
|
||||
<defense_archer>40</defense_archer>
|
||||
<carry>15</carry>
|
||||
</sword>
|
||||
<axe>
|
||||
<build_time>1320</build_time>
|
||||
<pop>1</pop>
|
||||
<speed>18</speed>
|
||||
<attack>40</attack>
|
||||
<defense>10</defense>
|
||||
<defense_cavalry>5</defense_cavalry>
|
||||
<defense_archer>10</defense_archer>
|
||||
<carry>10</carry>
|
||||
</axe>
|
||||
<archer>
|
||||
<build_time>1800</build_time>
|
||||
<pop>1</pop>
|
||||
<speed>18</speed>
|
||||
<attack>15</attack>
|
||||
<defense>50</defense>
|
||||
<defense_cavalry>40</defense_cavalry>
|
||||
<defense_archer>5</defense_archer>
|
||||
<carry>10</carry>
|
||||
</archer>
|
||||
<spy>
|
||||
<build_time>900</build_time>
|
||||
<pop>2</pop>
|
||||
<speed>9</speed>
|
||||
<attack>0</attack>
|
||||
<defense>2</defense>
|
||||
<defense_cavalry>1</defense_cavalry>
|
||||
<defense_archer>2</defense_archer>
|
||||
<carry>0</carry>
|
||||
</spy>
|
||||
<light>
|
||||
<build_time>1800</build_time>
|
||||
<pop>4</pop>
|
||||
<speed>10</speed>
|
||||
<attack>130</attack>
|
||||
<defense>30</defense>
|
||||
<defense_cavalry>40</defense_cavalry>
|
||||
<defense_archer>30</defense_archer>
|
||||
<carry>80</carry>
|
||||
</light>
|
||||
<marcher>
|
||||
<build_time>2700</build_time>
|
||||
<pop>5</pop>
|
||||
<speed>10</speed>
|
||||
<attack>120</attack>
|
||||
<defense>40</defense>
|
||||
<defense_cavalry>30</defense_cavalry>
|
||||
<defense_archer>50</defense_archer>
|
||||
<carry>50</carry>
|
||||
</marcher>
|
||||
<heavy>
|
||||
<build_time>3600</build_time>
|
||||
<pop>6</pop>
|
||||
<speed>11</speed>
|
||||
<attack>150</attack>
|
||||
<defense>200</defense>
|
||||
<defense_cavalry>80</defense_cavalry>
|
||||
<defense_archer>180</defense_archer>
|
||||
<carry>50</carry>
|
||||
</heavy>
|
||||
<ram>
|
||||
<build_time>4800</build_time>
|
||||
<pop>5</pop>
|
||||
<speed>30</speed>
|
||||
<attack>2</attack>
|
||||
<defense>20</defense>
|
||||
<defense_cavalry>50</defense_cavalry>
|
||||
<defense_archer>20</defense_archer>
|
||||
<carry>0</carry>
|
||||
</ram>
|
||||
<catapult>
|
||||
<build_time>7200</build_time>
|
||||
<pop>8</pop>
|
||||
<speed>30</speed>
|
||||
<attack>100</attack>
|
||||
<defense>100</defense>
|
||||
<defense_cavalry>50</defense_cavalry>
|
||||
<defense_archer>100</defense_archer>
|
||||
<carry>0</carry>
|
||||
</catapult>
|
||||
<knight>
|
||||
<build_time>21600</build_time>
|
||||
<pop>10</pop>
|
||||
<speed>10</speed>
|
||||
<attack>150</attack>
|
||||
<defense>250</defense>
|
||||
<defense_cavalry>400</defense_cavalry>
|
||||
<defense_archer>150</defense_archer>
|
||||
<carry>100</carry>
|
||||
</knight>
|
||||
<snob>
|
||||
<build_time>18000</build_time>
|
||||
<pop>100</pop>
|
||||
<speed>35</speed>
|
||||
<attack>30</attack>
|
||||
<defense>100</defense>
|
||||
<defense_cavalry>50</defense_cavalry>
|
||||
<defense_archer>100</defense_archer>
|
||||
<carry>0</carry>
|
||||
</snob>
|
||||
<militia>
|
||||
<build_time>1</build_time>
|
||||
<pop>0</pop>
|
||||
<speed>0.016666666666667</speed>
|
||||
<attack>0</attack>
|
||||
<defense>15</defense>
|
||||
<defense_cavalry>45</defense_cavalry>
|
||||
<defense_archer>25</defense_archer>
|
||||
<carry>0</carry>
|
||||
</militia>
|
||||
</config>
|
283
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/ally.txt
vendored
Normal file
283
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/ally.txt
vendored
Normal file
|
@ -0,0 +1,283 @@
|
|||
1,Konfederacja,CSA-X,49,9610,79734535,84293901,1
|
||||
4,Farmerzy,Farma,1,2,9523,9523,127
|
||||
7,Spoceni+Kuzyni,KUZYNI,41,4745,39443045,39443116,4
|
||||
8,W+O+W,WOW,10,10,26037,26037,90
|
||||
12,AveMy,AveMy,2,1,5995,5995,146
|
||||
13,FarmerzyPremium,P.P,1,1,454,454,216
|
||||
19,Wojna+Domowa+Centrum,%2AWDC%2A,2,1,129,129,241
|
||||
24,Anonymous,IT,17,21,69149,69149,63
|
||||
29,Elitarne+plemie+zbieraczy+PP,EPZPP,50,122,481916,484598,32
|
||||
31,Project+D,PD,20,28,71157,71157,62
|
||||
33,Towarzystwo+Wzajemnej+Asekuracji,TWA,25,61,243847,243847,44
|
||||
35,MotoMyszy.,MzM,48,4085,35223609,35837645,6
|
||||
39,OZDR+%2B+Why,Ozdr%40,28,374,2661501,2661501,15
|
||||
47,Konfederacja+Z,CSA-Z,48,9539,77167049,81825499,2
|
||||
53,Zakon+Zielonego+Li%C5%9Bcia,420,1,13,49609,49609,71
|
||||
56,Pot%C4%99%C5%BCne+Pelikany,%2APP%2A,1,1,678,678,207
|
||||
59,Znani+i+Nieznani,ZiN,9,8,17154,17154,109
|
||||
68,Obro%C5%84cy+Cadii,Cadia,20,105,496548,496548,31
|
||||
71,why+so+serious,Why%3F,26,1144,9778999,9778999,10
|
||||
72,Dinozaury,DINO,3,4,15813,15813,111
|
||||
77,Wyznawcy+Darksizmu,-WzDa-,5,5,3811,3811,164
|
||||
80,Legion,-LM-,13,31,162947,162947,49
|
||||
85,Motomyszy,MzM.,50,4613,38916809,40754476,5
|
||||
89,FRIENDOLINOS,OG,2,0,168,168,237
|
||||
92,MotoMyszy%21,MzM%21,1,1,3421,3421,167
|
||||
96,Zakon+Czerwonej+R%C3%B3%C5%BCy,Z.C.R,12,13,19201,19201,102
|
||||
97,FARMERZY+PLEMION,FARME,1,6,23474,23474,95
|
||||
106,GWIEZDNA+FEDERACJA,GF,24,342,1896632,1896632,16
|
||||
112,co%C5%9B+wi%C4%99cej,CW,4,3,1122,1122,196
|
||||
115,zgierzanie,zgr,1,7,45603,45603,76
|
||||
116,PotrzymajMiBrowar,PMB,1,1,1598,1598,187
|
||||
117,Przybysze+z+kosmosu,Pzk,5,5,19683,19683,101
|
||||
120,Orkowi+Zawodnicy+Dominuj%C4%85+Rybki,OZDR,49,5550,46956015,48360507,3
|
||||
125,Szcz%C4%99%C5%9Bliwi+Gracze,SG,4,6,33298,33298,85
|
||||
129,PREM,Punkty,5,19,24356,24356,93
|
||||
134,DarNocy,DN,1,5,31077,31077,87
|
||||
147,Bandycka+Elita+Niskoros%C5%82ych,BENIS,1,0,0,0,260
|
||||
157,Domino,Dom,35,181,916826,916826,25
|
||||
159,Oggr,Ogg,1,0,524,524,214
|
||||
176,Albanski+Raj,AR,2,6,42024,42024,78
|
||||
185,NISZCZYCIELE,%7CN%7C,1,0,0,0,261
|
||||
187,Champions+League,-ChL-,1,0,347,347,220
|
||||
194,Vis+Maior,VS,17,150,820208,820208,26
|
||||
200,Takie+tam,Ttm.,1,0,531,531,213
|
||||
206,Pppp,P..p,1,0,551,551,211
|
||||
210,NoPon,N-P,47,68,204493,205215,47
|
||||
211,%2APotrzymaj+mi+Piwo,%2APmP,2,5,18106,18106,106
|
||||
214,Armia+Bosmana,BOSMAN,3,3,4230,4230,159
|
||||
216,Plemie+Igora,P.L.I,1,0,0,0,262
|
||||
220,Amatorzy+Kiszonych+Og%C3%B3rk%C3%B3w,ALKO,3,3,2264,2264,179
|
||||
234,Pepeki123,pepek,24,27,81264,81264,57
|
||||
236,Nakr%C4%99cane+Myszy,NM,1,0,262,262,226
|
||||
255,-QED-,QED,1,3,22893,22893,96
|
||||
256,GET+this+osada,GETTO,1,1,2552,2552,174
|
||||
260,B%C5%82%C4%99kitna+Planeta,%2ABP%2A,1,0,5708,5708,149
|
||||
281,Liga+Mistrzow,LM,1,3,5950,5950,147
|
||||
285,Kompletnie+Bezsensowne+Plemi%C4%99+xD,KBS,17,51,211326,211326,46
|
||||
287,fififi,fi,1,3,10461,10461,123
|
||||
290,Komercja+Plemionn,K+-+P,1,0,197,197,233
|
||||
291,MotoMyszy%3F,.Mzm.,47,2593,19704268,20286906,8
|
||||
301,Psycho+szczury,MzM..,37,1866,14094868,14094868,9
|
||||
305,Pro+Sto,Pro,1,1,7425,7425,136
|
||||
309,Konfederacja+Y,CSA-Y,18,1088,9174264,9174264,11
|
||||
317,Szalone+Nied%C5%BAwiedzie,Mi%C5%9Bki,1,0,4609,4609,157
|
||||
319,PAKT,PAKT,2,2,6188,6188,145
|
||||
336,hkgj,kw,1,0,0,0,263
|
||||
339,ZARZEW,ZRW,1,0,2775,2775,170
|
||||
355,uuuuuuuuuuuuuuu,uuu,1,0,3988,3988,160
|
||||
365,GIE%C5%81DA,GA,1,0,8318,8318,131
|
||||
369,0rkowi+Zawodnicy+Dominuj%C4%85+Rybki,0ZDR,36,3043,26198197,26198197,7
|
||||
373,Gildia+Kupiecka,GK,2,3,13805,13805,115
|
||||
374,xyz.,xyz.,1,0,901,901,199
|
||||
375,PePeKi+PP.PP,PKTPP,18,16,38947,38947,80
|
||||
377,AKADEMIA+WD,AWD,24,26,56124,56124,68
|
||||
382,HANDEL,HANDEL,1,1,2203,2203,180
|
||||
385,Bia%C5%82a+Armia,B.A,5,17,80171,80171,58
|
||||
397,Emka,E.M.,1,1,1170,1170,194
|
||||
412,BOMBA,BOMBA,22,107,396978,396978,35
|
||||
413,Giht,Hggf,1,1,1374,1374,189
|
||||
415,.%3Axxx%3A.,xxxx,1,0,26,26,249
|
||||
429,Zabi+Staw,Z-S,1,0,812,812,200
|
||||
430,%2A%2AWojna+Idei%2A%2A,%2A%2AWD%2A%2A,1,0,0,0,264
|
||||
432,McOpole,McOpo,21,210,1249639,1249639,21
|
||||
435,ave+sieci,sieci,1,1,4441,4441,158
|
||||
441,Project+D%21,PD%21,23,43,96866,96866,55
|
||||
443,PEAKY+BLINDERS,PB,1,0,0,0,265
|
||||
451,AVE+%28M%29,AVE%28M%29,1,0,169,169,236
|
||||
452,Obro%C5%84cy+Krasnali+Ogroduwych,OKO,47,108,386827,388034,36
|
||||
474,zagubiony+natanek,wul,1,0,536,536,212
|
||||
475,Zbieracze+Punktow+Premium,Z%2AP%2AP,2,2,9300,9300,129
|
||||
503,TMPL,TMP,1,1,2332,2332,178
|
||||
517,M%C3%B3j+Dom,%3D+MD+%3D,2,1,1174,1174,193
|
||||
520,ESSA,ESSA,2,6,25153,25153,92
|
||||
523,Wiocha,Yuby,1,0,261,261,227
|
||||
546,WOJNA+IDEI,WD,1,1,50,50,248
|
||||
548,Co+Chcesz%3F,CO,1,1,317,317,223
|
||||
554,%3Dpremium%3D,pp.,3,2,4768,4768,155
|
||||
557,WYROLOWANI,WYROL,1,5,39506,39506,79
|
||||
594,T+E+R+Y+T+O+R+I+U+M,%5DT%5B,4,4,13494,13494,117
|
||||
597,Bractwo+Krzy%C5%BCowe,%2BBK%2B,2,1,7686,7686,134
|
||||
607,NAJEMNICY.,N%2FM%2FY,5,22,95363,95363,56
|
||||
624,K35+DEMONY,K35,1,3,19050,19050,103
|
||||
625,Wilki,Wilki,1,0,808,808,201
|
||||
626,Targowica,Targ,1,3,11099,11099,121
|
||||
633,Wolny,WS,1,16,80047,80047,59
|
||||
636,Superpremium,%28%24%29,5,5,5381,5381,151
|
||||
647,Ow%C5%82osione+Rogale,OwR,7,11,36369,36369,82
|
||||
651,Semper+Invicta,Sempe,3,4,11832,11832,120
|
||||
664,Kal-Kol,K+L+N,3,2,7328,7328,138
|
||||
666,KOM0RNICY+2,KOM2,27,504,3631190,3631190,13
|
||||
686,Semper+Invicta.,Semp.,3,2,3169,3169,169
|
||||
689,Ga%C5%9Bnice+Po%C5%BCarowe+Stra%C5%BCaka,GPS%21,1,0,126,126,243
|
||||
693,Why+So+Serious%3F,Why,1,0,0,0,266
|
||||
722,Bractwo+Nocnych+Polan,BNP,30,196,1067408,1067408,22
|
||||
723,Raki+nie+boraki,Rnb,1,1,2750,2750,171
|
||||
733,Kuzyni+2,KUZYNA,1,1,26,26,250
|
||||
750,Moje+OHV,OHV,1,0,249,249,228
|
||||
758,-300-,-300-,5,6,13695,13695,116
|
||||
766,%2AAnonymous%2A,%2AAMS%2A,1,0,0,0,267
|
||||
778,Imperium+Polskie,IP,12,12,30040,30040,88
|
||||
785,KOMORNICY3,KOM3,38,737,5057759,5057759,12
|
||||
786,JP2+2137,21%3A37,7,48,257077,257077,42
|
||||
806,Cesarstwo+Zachodnio+Rzymskie,SPQR,1,0,26,26,251
|
||||
809,NOC3,NOC3,1,0,343,343,221
|
||||
822,%2AGramy+Dla+Zabawy%2A%2A,%2AGDZ%2A%2A,2,10,42120,42120,77
|
||||
830,Komornicy,KOM1,3,13,73615,73615,61
|
||||
841,PP+Pan+Dziobak,PEPE,1,1,771,771,203
|
||||
847,Nowa+nadzieja,Nowa,35,119,351739,351739,39
|
||||
862,IMPERIUM+%2B,.%3A%2B%3A.,31,287,1774471,1774471,17
|
||||
936,Gracz+bula9001+zablokowa%C5%82+ci%C4%99.,bula90,1,8,77623,77623,60
|
||||
944,YOGI,YOGI,7,14,60284,60284,66
|
||||
945,Brygada+RR,RR,1,0,689,689,206
|
||||
963,Grupa+Amerykanka,GAZ,2,2,2349,2349,176
|
||||
965,Kamilanie+Gora,KG,1,0,1827,1827,182
|
||||
989,KOMORNICYX,KOMX,2,1,9905,9905,125
|
||||
991,Ordo+Theutonicorum,OT,1,0,0,0,268
|
||||
1023,AWANGARDA,.%29A%28.,4,15,55248,55248,69
|
||||
1039,IMPERIUM+%2B%2B,%3A%2B%3A,11,107,563999,563999,30
|
||||
1040,We+Are+Ready%21,WAR%21,2,3,18048,18048,107
|
||||
1052,Gachi+Frens,-%3DGF%3D-,11,29,139074,139074,51
|
||||
1058,Powa%C5%BCneUgrupowanieBy%C5%82ychGraczy,PUBG,1,1,10021,10021,124
|
||||
1079,Rycerze+Czerwonego+Tartanu,RCT,6,56,369388,369388,37
|
||||
1096,DNR+F,ACHTUN,4,7,38811,38811,81
|
||||
1108,K0MORNICY4,KOM4,13,68,329883,329883,40
|
||||
1127,BLOCKCHAIN,CRYPTO,1,8,49418,49418,72
|
||||
1128,Nazwa+b%C4%99dzie+wkr%C3%B3tce,NBW,16,81,416408,416408,33
|
||||
1140,0.7+zg%C5%82o%C5%9B+si%C4%99,POLEJ,8,135,1011133,1011133,24
|
||||
1148,HELLGATE,%2AHG%2A,9,61,234026,234026,45
|
||||
1161,Ose%C5%82ka,OS.,1,2,13377,13377,118
|
||||
1163,Kl8F,Klasa8,2,2,12630,12630,119
|
||||
1166,Dybuk,Dybuk,1,3,18993,18993,104
|
||||
1170,Nono,Nnn,1,0,0,0,269
|
||||
1209,Komandosi+na+5,KOM5,2,5,20529,20529,100
|
||||
1226,Cartel+TW,Cartel,40,476,3200975,3200975,14
|
||||
1232,Braty+i+Kompany,BiK,4,4,1235,1235,192
|
||||
1247,%C5%BCydek+natanek,qwq,1,0,243,243,229
|
||||
1258,Bum%21,Bum%21,1,0,128,128,242
|
||||
1261,Ujazdowcy,UJ,1,2,6741,6741,143
|
||||
1275,CSA-ATAK,CSA-AT,1,0,26,26,252
|
||||
1278,Waffen-SS,W-SS,1,3,7062,7062,141
|
||||
1293,youll+never+walk+alone,ynwa,11,50,301640,301640,41
|
||||
1312,Purpurowi+Zegarmistrze+%C5%9Awiat%C5%82a,ZEGARY,45,186,701653,703439,28
|
||||
1317,1edc,1edc,1,0,26,26,253
|
||||
1333,Grupa+Wsparcia+Amator%C3%B3w,GWA,1,0,764,764,204
|
||||
1336,Scandi+Power,SCP,21,266,1514988,1514988,18
|
||||
1338,weee,wg,1,0,0,0,270
|
||||
1347,BezCov,B-C,3,2,7308,7308,139
|
||||
1357,J.+B.+B....,JBB%3B%2F,1,0,0,0,271
|
||||
1368,Elitarny+Legion,ELITA,2,18,68427,68427,64
|
||||
1372,WIDMO,WIDMO,1,0,0,0,272
|
||||
1376,Wojna+Idei+P,WDP,1,1,628,628,209
|
||||
1389,dfbdfbd,db,1,0,4663,4663,156
|
||||
1399,Bojk%C3%B3w,_B_,3,6,36070,36070,83
|
||||
1411,HURAGAN,Tajfun,28,257,1405083,1405083,20
|
||||
1416,Z%C5%82odzieje+Przysz%C5%82o%C5%9Bci,%3DZP%3D,1,1,1857,1857,181
|
||||
1418,Plemi%C4%99+Rodu+Smoka,PRS,3,22,172971,172971,48
|
||||
1421,Dla+fanu+pykamy,DFP,1,0,1643,1643,184
|
||||
1423,Grupa+Armii+%C5%9Arodek,%C5%9Arodek,2,11,52309,52309,70
|
||||
1428,Wodne+zwierzaczki,WZ,1,3,17761,17761,108
|
||||
1431,Amanita+Muscaria,A-M,3,2,1511,1511,188
|
||||
1432,Nasze+Plemie,ABW,1,1,1627,1627,185
|
||||
1448,myself,%3DMf%3D,1,0,0,0,273
|
||||
1456,1-2-0,1x2,2,2,10863,10863,122
|
||||
1460,bobertos,ZIOM,2,1,200,200,232
|
||||
1466,GREEN+STREET+HOOLIGANS,GSH,7,20,112014,112014,54
|
||||
1470,SunnyValley,SV,1,6,45642,45642,75
|
||||
1477,Do+ko%C5%84ca%21,DK%21,1,1,307,307,224
|
||||
1480,KUZYN+X,KUZYN%3F,14,284,1482901,1482901,19
|
||||
1483,Afrika+Korps,AK,1,0,0,0,274
|
||||
1484,INVISIBLE,IV,1,0,26,26,254
|
||||
1494,Wioska+Matrix9105%40,Matrix,1,0,0,0,275
|
||||
1498,Kokoko,KKK7,1,0,2745,2745,172
|
||||
1523,Ty+i+Twoje+orzeszki,T.T,26,115,649837,649837,29
|
||||
1526,Polanie,Polani,1,0,0,0,276
|
||||
1528,NieZniszczalni.,NZ,3,3,2617,2617,173
|
||||
1530,S%C5%81OWIANIE,S%C5%81OWO,3,3,6388,6388,144
|
||||
1535,The+Gorillas,GOR,2,26,142006,142006,50
|
||||
1538,Ho+no+tu,SOO,1,2,7382,7382,137
|
||||
1551,Siewca+Wiatru,%7ESW%7E,7,14,48043,48043,74
|
||||
1573,DUCHY,DUCH,11,10,9505,9505,128
|
||||
1582,Ca%C5%82e+%C5%BBycie+z+Wariatami,WARIAT,1,1,7987,7987,133
|
||||
1585,SAM+WE+M%C5%81YNIE,SWM,1,0,722,722,205
|
||||
1588,Moment+Strategiczny,no+c%C3%B3%C5%BC,1,12,59739,59739,67
|
||||
1590,Bo+od+tylu+tez+jest+fajnie,Xes,5,5,3318,3318,168
|
||||
1597,Kontra,Kontra,42,178,791549,799441,27
|
||||
1599,ma%C5%82e+ciche+do+g%C4%99siej+szyji,mcgs,1,0,358,358,219
|
||||
1602,Uuuu,Uuy,1,1,3854,3854,163
|
||||
1609,asdd,das,1,0,0,0,277
|
||||
1610,Kombinat+Punkkt%C3%B3w+Premium,KPP,1,0,138,138,240
|
||||
1621,Rolnicy+Podlasie,RP,11,186,1018468,1018468,23
|
||||
1626,JazdaZKuramk,JZK,1,0,0,0,278
|
||||
1627,ANONYMOUSS,ANS,15,43,112530,112530,53
|
||||
1636,GDZIE+S%C4%84+%3F%3F%3F,MA%C5%81YSZ,1,1,3622,3622,165
|
||||
1638,asyy,asyy,1,0,26,26,255
|
||||
1643,1112,12,1,0,0,0,279
|
||||
1645,Rekontakt,REK,2,3,8317,8317,132
|
||||
1648,Aldente,Ald,1,1,338,338,222
|
||||
1651,Oszukani,New,2,1,3936,3936,161
|
||||
1652,%C5%81omocimy,Zaj%C4%99nc,1,7,15823,15823,110
|
||||
1656,Robotniczy+Klub+Sportowy+HUWDU,HUWDU,1,1,270,270,225
|
||||
1657,Xyz%2C,Xyz%2C,1,0,498,498,215
|
||||
1669,Mocny+FULL,FULL,5,8,18721,18721,105
|
||||
1672,MKM.,MKM.,1,2,9572,9572,126
|
||||
1680,Mymu,My,2,4,27342,27342,89
|
||||
1681,fehg,wwerj,1,0,0,0,280
|
||||
1683,......,FIN,1,9,49097,49097,73
|
||||
1687,SoSKooperacja,SoS,7,7,14738,14738,114
|
||||
1690,Nie%C5%9Bmiertelni,ookp,1,1,2343,2343,177
|
||||
1691,Zbieram+flagi,Zbf,1,4,7264,7264,140
|
||||
1692,Zapraszam+ch%C4%99tnych,Buuu,1,1,5178,5178,152
|
||||
1700,Fiku+Miku,FIUFIU,4,70,367550,367550,38
|
||||
1705,Galaktyczna+Federacja+%C5%9Awiat%C5%82a,GF+II,1,1,1609,1609,186
|
||||
1707,Koniec,1234,1,1,26,26,256
|
||||
1715,R-C-,RC,1,2,5005,5005,153
|
||||
1716,KOMORNIKI,KOMY,2,4,34258,34258,84
|
||||
1721,Pocahontas,Gg,1,2,5823,5823,148
|
||||
1724,Punkty+Premium+i+Flagi,Witamy,37,64,251898,251898,43
|
||||
1727,Lykanie,LK,1,0,0,0,281
|
||||
1728,fffff,fffff,1,1,3440,3440,166
|
||||
1729,Gallowo,GAL,1,7,14794,14794,113
|
||||
1734,Woir,Wrrrr,1,1,5703,5703,150
|
||||
1735,Strong+Ekipa,SE,31,114,404065,404065,34
|
||||
1737,Samiec+Alfa,Alfa,1,0,0,0,282
|
||||
1740,T.W.,%3DTW%3D,1,19,122227,122227,52
|
||||
1745,Dni+w+Plemieniu,DWP,1,2,15224,15224,112
|
||||
1750,CZY+TO+X%3F,Xx,1,0,0,0,283
|
||||
1751,xddd,xddd,1,0,68,68,246
|
||||
1753,eeee,eeee,1,1,774,774,202
|
||||
1754,PogromcY,PY,1,1,1131,1131,195
|
||||
1755,cudo,C%21%21,1,1,988,988,198
|
||||
1757,Lublin,LUB,1,1,1274,1274,190
|
||||
1758,Oddam+wioski,OW,1,5,25709,25709,91
|
||||
1760,Qwer,Qwe,1,4,8366,8366,130
|
||||
1763,Altra,ALR,1,5,23924,23924,94
|
||||
1764,Traktor,TRK,1,1,26,26,257
|
||||
1770,ooooo,ooo,1,1,153,153,239
|
||||
1771,WD40,30,1,2,6944,6944,142
|
||||
1772,Jdhd,Hdhdh,1,1,2516,2516,175
|
||||
1777,Chlip,CHP,1,1,998,998,197
|
||||
1779,1905,CWKS,1,2,7537,7537,135
|
||||
1780,Lololololol,Lol,2,3,21393,21393,97
|
||||
1782,disco,dsc,1,1,639,639,208
|
||||
1783,Niszczycielski+Akwedukt,NA,2,2,1681,1681,183
|
||||
1785,HELLO,HELLO,2,2,1237,1237,191
|
||||
1786,Pomy%C5%9Bl+zanim+kopniesz+Qunia,Q%C5%84.,1,1,3883,3883,162
|
||||
1787,WCF+%21,WCF,1,1,26,26,258
|
||||
1789,klin,lki,1,0,239,239,230
|
||||
1790,Kruk,-KR-,1,8,32971,32971,86
|
||||
1791,Wymiana,Flagi,1,1,26,26,259
|
||||
1792,Winners,Win,1,1,371,371,218
|
||||
1793,Sam1,Sam1,1,11,67321,67321,65
|
||||
1795,Kukabaka,kUKLA,2,2,562,562,210
|
||||
1797,Mi%C5%82o%C5%9Bnicy+Taniego+Piwa,Browar,18,19,21004,21004,98
|
||||
1798,Gggg,Ggg,1,1,4773,4773,154
|
||||
1799,Kkkkk,Kkkkk,2,2,52,52,247
|
||||
1802,weRFAS,DFSAFS,2,2,103,103,244
|
||||
1803,czarnuchowo,WPDS,1,1,162,162,238
|
||||
1804,12345,12345,3,3,78,78,245
|
||||
1806,Kto+zjad%C5%82+ciastka%3F,KZC%3F,1,1,206,206,231
|
||||
1807,ZaPPFrakcja+W,CSA-W,1,0,443,443,217
|
||||
1808,LECOQ,LECOQ,1,3,20560,20560,99
|
||||
1809,Vexel,Vexel,1,1,178,178,234
|
||||
1810,Sobie+Sam,SS,1,1,172,172,235
|
2583
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/kill_all.txt
vendored
Normal file
2583
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/kill_all.txt
vendored
Normal file
File diff suppressed because it is too large
Load Diff
263
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/kill_all_tribe.txt
vendored
Normal file
263
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/kill_all_tribe.txt
vendored
Normal file
|
@ -0,0 +1,263 @@
|
|||
2,1,515371643
|
||||
99,4,1148596
|
||||
3,7,513604231
|
||||
68,8,2934253
|
||||
82,12,1995368
|
||||
119,13,650623
|
||||
34,19,11791705
|
||||
79,24,2163061
|
||||
56,29,4019564
|
||||
62,31,3579958
|
||||
35,33,11518323
|
||||
9,35,116574112
|
||||
11,39,90816918
|
||||
4,47,465294036
|
||||
145,53,328407
|
||||
120,56,632131
|
||||
61,59,3640507
|
||||
48,68,6533937
|
||||
31,71,15537972
|
||||
127,72,544908
|
||||
25,77,24603199
|
||||
21,80,36195899
|
||||
7,85,120816085
|
||||
105,89,936121
|
||||
85,92,1913549
|
||||
70,96,2812912
|
||||
123,97,598608
|
||||
55,106,4428016
|
||||
22,112,30162886
|
||||
133,115,476582
|
||||
95,116,1243734
|
||||
67,117,3041909
|
||||
1,120,572571198
|
||||
83,125,1945540
|
||||
65,129,3202656
|
||||
96,134,1224123
|
||||
81,147,2028269
|
||||
49,157,6305119
|
||||
236,159,7890
|
||||
167,176,158224
|
||||
140,185,377805
|
||||
251,187,1367
|
||||
20,194,38560907
|
||||
224,200,23586
|
||||
151,206,242627
|
||||
59,210,3759711
|
||||
69,211,2893518
|
||||
102,214,993608
|
||||
213,216,32443
|
||||
121,220,630577
|
||||
66,234,3097023
|
||||
182,236,91702
|
||||
210,255,34460
|
||||
50,256,6123731
|
||||
178,260,100851
|
||||
170,281,140209
|
||||
87,285,1515968
|
||||
232,287,11666
|
||||
253,290,539
|
||||
17,291,62760850
|
||||
18,301,53752856
|
||||
158,305,198650
|
||||
16,309,65055844
|
||||
164,317,182517
|
||||
116,319,708504
|
||||
148,336,267052
|
||||
242,339,5459
|
||||
113,355,760905
|
||||
200,365,52241
|
||||
5,369,176482721
|
||||
115,373,711036
|
||||
197,374,54819
|
||||
89,375,1379428
|
||||
52,377,5347117
|
||||
143,382,358666
|
||||
86,385,1780581
|
||||
208,397,36806
|
||||
46,412,6846095
|
||||
156,413,215538
|
||||
234,415,10061
|
||||
163,429,184774
|
||||
27,430,19841316
|
||||
40,432,7641920
|
||||
159,435,197777
|
||||
44,441,7023533
|
||||
183,443,83584
|
||||
161,451,188672
|
||||
38,452,9512471
|
||||
218,474,28931
|
||||
94,475,1255265
|
||||
238,503,7494
|
||||
71,517,2615421
|
||||
135,520,454684
|
||||
137,523,437089
|
||||
42,546,7268867
|
||||
41,548,7387675
|
||||
146,554,322799
|
||||
217,557,29930
|
||||
29,594,16158300
|
||||
172,597,139493
|
||||
97,607,1218207
|
||||
162,624,185431
|
||||
193,625,66255
|
||||
235,626,8121
|
||||
147,633,269847
|
||||
169,636,149152
|
||||
104,647,991269
|
||||
98,651,1202644
|
||||
90,664,1371321
|
||||
14,666,67122577
|
||||
118,686,672292
|
||||
174,689,135903
|
||||
33,693,13927849
|
||||
23,722,28313016
|
||||
246,723,4610
|
||||
129,733,512496
|
||||
108,750,876738
|
||||
93,758,1256466
|
||||
141,766,365059
|
||||
78,778,2169593
|
||||
10,785,107610800
|
||||
63,786,3554001
|
||||
132,806,476872
|
||||
165,809,171639
|
||||
77,822,2340609
|
||||
12,830,87500446
|
||||
190,841,69410
|
||||
75,847,2487934
|
||||
6,862,136829959
|
||||
84,936,1940894
|
||||
64,944,3264303
|
||||
222,945,27441
|
||||
179,963,97544
|
||||
221,965,27527
|
||||
74,989,2543700
|
||||
130,991,500661
|
||||
32,1023,14729351
|
||||
13,1039,85035694
|
||||
36,1040,11104753
|
||||
43,1052,7062125
|
||||
109,1058,863124
|
||||
58,1079,3819385
|
||||
111,1096,792047
|
||||
28,1108,17760154
|
||||
185,1127,81545
|
||||
15,1128,66569234
|
||||
47,1140,6606194
|
||||
39,1148,8063060
|
||||
101,1161,996140
|
||||
187,1163,77166
|
||||
233,1166,11428
|
||||
220,1170,27655
|
||||
107,1209,886014
|
||||
37,1226,10147516
|
||||
57,1232,3875380
|
||||
192,1247,66890
|
||||
153,1258,223069
|
||||
230,1261,13732
|
||||
138,1275,399365
|
||||
131,1278,481948
|
||||
53,1293,4833403
|
||||
76,1312,2353367
|
||||
204,1317,46145
|
||||
160,1333,197267
|
||||
26,1336,20372946
|
||||
177,1338,113620
|
||||
207,1347,40837
|
||||
152,1357,224264
|
||||
92,1368,1288389
|
||||
191,1372,68452
|
||||
45,1376,6847914
|
||||
201,1389,51601
|
||||
103,1399,992741
|
||||
19,1411,47859039
|
||||
157,1416,214608
|
||||
73,1418,2557465
|
||||
209,1421,35273
|
||||
134,1423,471241
|
||||
122,1428,630185
|
||||
124,1431,594841
|
||||
114,1432,733473
|
||||
168,1448,149206
|
||||
112,1456,785196
|
||||
255,1460,381
|
||||
88,1466,1449811
|
||||
128,1470,528181
|
||||
142,1477,358920
|
||||
24,1480,26406450
|
||||
80,1483,2062188
|
||||
225,1484,22060
|
||||
215,1494,30432
|
||||
176,1498,126080
|
||||
8,1523,117037428
|
||||
184,1526,81749
|
||||
51,1528,5769388
|
||||
100,1530,1117026
|
||||
198,1535,52879
|
||||
249,1538,3192
|
||||
139,1551,395786
|
||||
196,1573,56642
|
||||
248,1582,3987
|
||||
229,1585,13876
|
||||
214,1588,31524
|
||||
223,1590,25538
|
||||
54,1597,4697746
|
||||
166,1599,165273
|
||||
110,1602,805496
|
||||
180,1609,97494
|
||||
202,1610,48607
|
||||
30,1621,16042856
|
||||
231,1626,13439
|
||||
144,1627,333654
|
||||
154,1636,221031
|
||||
117,1638,699804
|
||||
244,1643,4920
|
||||
211,1645,33370
|
||||
91,1648,1299521
|
||||
72,1651,2577567
|
||||
149,1652,261207
|
||||
243,1656,5332
|
||||
155,1657,215830
|
||||
212,1669,32937
|
||||
241,1672,5468
|
||||
150,1680,249572
|
||||
189,1681,69556
|
||||
195,1683,64569
|
||||
173,1687,137468
|
||||
228,1690,16936
|
||||
188,1691,74052
|
||||
226,1692,17659
|
||||
126,1700,575944
|
||||
258,1705,62
|
||||
239,1715,6946
|
||||
125,1716,584874
|
||||
247,1721,4371
|
||||
106,1724,917830
|
||||
237,1727,7801
|
||||
240,1729,6680
|
||||
194,1734,64596
|
||||
136,1735,449124
|
||||
171,1737,140112
|
||||
186,1740,81233
|
||||
175,1745,130123
|
||||
205,1750,43707
|
||||
263,1753,2
|
||||
262,1754,10
|
||||
254,1755,395
|
||||
252,1757,1278
|
||||
216,1758,30079
|
||||
219,1760,27699
|
||||
203,1763,46599
|
||||
257,1770,124
|
||||
199,1771,52625
|
||||
245,1772,4774
|
||||
261,1777,10
|
||||
256,1779,207
|
||||
60,1780,3642793
|
||||
259,1783,52
|
||||
250,1785,1705
|
||||
206,1790,43136
|
||||
181,1793,97199
|
||||
260,1795,40
|
||||
227,1797,17184
|
1991
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/kill_att.txt
vendored
Normal file
1991
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/kill_att.txt
vendored
Normal file
File diff suppressed because it is too large
Load Diff
213
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/kill_att_tribe.txt
vendored
Normal file
213
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/kill_att_tribe.txt
vendored
Normal file
|
@ -0,0 +1,213 @@
|
|||
2,1,197149923
|
||||
163,4,7808
|
||||
4,7,133940808
|
||||
89,8,155525
|
||||
114,12,71331
|
||||
119,13,63826
|
||||
29,19,3109409
|
||||
80,24,205544
|
||||
60,29,419592
|
||||
68,31,271134
|
||||
99,33,127014
|
||||
6,35,67576037
|
||||
8,39,38547158
|
||||
1,47,236152747
|
||||
187,53,1297
|
||||
102,56,107411
|
||||
108,59,89693
|
||||
45,68,1066395
|
||||
16,71,8406402
|
||||
133,72,38620
|
||||
34,77,2196064
|
||||
25,80,4699158
|
||||
5,85,86023620
|
||||
105,89,94543
|
||||
79,92,208853
|
||||
129,96,40098
|
||||
137,97,33470
|
||||
39,106,1547869
|
||||
38,112,1711002
|
||||
142,115,25141
|
||||
110,116,85225
|
||||
146,117,21965
|
||||
3,120,139926286
|
||||
100,125,110559
|
||||
111,129,82762
|
||||
62,134,397211
|
||||
112,147,80447
|
||||
61,157,415697
|
||||
152,176,16504
|
||||
166,185,7378
|
||||
31,194,2607720
|
||||
208,200,30
|
||||
83,210,178718
|
||||
71,211,257208
|
||||
127,214,41521
|
||||
211,216,12
|
||||
161,220,8278
|
||||
65,234,362768
|
||||
202,236,52
|
||||
33,256,2264454
|
||||
156,260,10522
|
||||
91,285,150587
|
||||
174,287,4521
|
||||
9,291,36875586
|
||||
11,301,26806801
|
||||
148,305,19292
|
||||
10,309,36138019
|
||||
118,319,67239
|
||||
178,336,3986
|
||||
7,369,58830293
|
||||
128,373,40352
|
||||
200,374,99
|
||||
84,375,174378
|
||||
67,377,331213
|
||||
196,382,291
|
||||
90,385,153097
|
||||
52,412,642975
|
||||
32,430,2549096
|
||||
24,432,5051794
|
||||
147,435,20699
|
||||
55,441,579188
|
||||
190,443,1031
|
||||
48,452,725489
|
||||
138,475,30918
|
||||
183,503,2275
|
||||
172,517,4826
|
||||
96,520,137000
|
||||
176,523,4107
|
||||
35,546,2097153
|
||||
41,548,1309325
|
||||
207,554,32
|
||||
188,557,1239
|
||||
37,594,1766507
|
||||
160,597,8289
|
||||
74,607,222168
|
||||
181,624,2475
|
||||
123,633,51266
|
||||
124,636,48384
|
||||
113,647,72783
|
||||
97,651,136651
|
||||
150,664,18675
|
||||
17,666,8113232
|
||||
120,686,61938
|
||||
23,693,5125520
|
||||
27,722,3734858
|
||||
95,733,141728
|
||||
107,750,91301
|
||||
77,758,212637
|
||||
130,766,40018
|
||||
154,778,16261
|
||||
15,785,8726932
|
||||
58,786,492119
|
||||
82,806,187855
|
||||
76,822,214844
|
||||
20,830,6182634
|
||||
153,841,16412
|
||||
73,847,241905
|
||||
12,862,18894601
|
||||
40,936,1367259
|
||||
72,944,249585
|
||||
198,945,114
|
||||
169,963,6190
|
||||
182,965,2359
|
||||
49,989,702186
|
||||
104,991,99680
|
||||
46,1023,869386
|
||||
13,1039,10258911
|
||||
36,1040,1922517
|
||||
51,1052,659407
|
||||
125,1058,44295
|
||||
85,1079,172850
|
||||
135,1096,36721
|
||||
30,1108,2992607
|
||||
136,1127,35542
|
||||
18,1128,7828246
|
||||
21,1140,6065875
|
||||
42,1148,1223288
|
||||
121,1161,59985
|
||||
140,1163,28985
|
||||
193,1166,365
|
||||
170,1170,6131
|
||||
81,1209,200678
|
||||
26,1226,4223030
|
||||
86,1232,171782
|
||||
168,1261,6589
|
||||
63,1275,394386
|
||||
149,1278,19193
|
||||
66,1293,351269
|
||||
53,1312,635357
|
||||
205,1317,42
|
||||
171,1333,5757
|
||||
28,1336,3119338
|
||||
210,1347,15
|
||||
141,1357,26793
|
||||
92,1368,149732
|
||||
179,1372,3874
|
||||
47,1376,783132
|
||||
122,1399,57170
|
||||
22,1411,5711015
|
||||
157,1416,10013
|
||||
64,1418,364951
|
||||
180,1421,3128
|
||||
115,1423,70186
|
||||
54,1428,610324
|
||||
164,1431,7530
|
||||
116,1432,67981
|
||||
98,1448,132845
|
||||
155,1456,11762
|
||||
103,1466,101232
|
||||
57,1470,507857
|
||||
191,1477,375
|
||||
19,1480,7053464
|
||||
87,1483,171122
|
||||
167,1494,7195
|
||||
209,1498,19
|
||||
14,1523,9693986
|
||||
177,1526,4100
|
||||
59,1528,476359
|
||||
134,1530,36737
|
||||
162,1535,7897
|
||||
109,1551,86090
|
||||
194,1573,326
|
||||
201,1582,55
|
||||
197,1585,281
|
||||
143,1588,25002
|
||||
50,1597,668744
|
||||
131,1599,39978
|
||||
145,1602,23331
|
||||
203,1609,52
|
||||
43,1621,1204990
|
||||
158,1626,9530
|
||||
139,1627,29761
|
||||
75,1636,220320
|
||||
101,1638,107892
|
||||
173,1643,4638
|
||||
44,1648,1091715
|
||||
88,1651,166503
|
||||
69,1652,258353
|
||||
184,1656,2129
|
||||
132,1657,38951
|
||||
159,1669,9010
|
||||
213,1672,1
|
||||
93,1680,149155
|
||||
144,1681,24465
|
||||
186,1683,1682
|
||||
185,1687,1713
|
||||
192,1691,370
|
||||
151,1692,17635
|
||||
117,1700,67818
|
||||
56,1716,523524
|
||||
175,1721,4371
|
||||
78,1724,210586
|
||||
199,1729,106
|
||||
70,1735,257705
|
||||
189,1737,1032
|
||||
165,1745,7416
|
||||
212,1763,9
|
||||
94,1780,142522
|
||||
204,1783,50
|
||||
195,1785,296
|
||||
126,1790,43136
|
||||
106,1793,91636
|
||||
206,1795,40
|
2515
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/kill_def.txt
vendored
Normal file
2515
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/kill_def.txt
vendored
Normal file
File diff suppressed because it is too large
Load Diff
259
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/kill_def_tribe.txt
vendored
Normal file
259
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/kill_def_tribe.txt
vendored
Normal file
|
@ -0,0 +1,259 @@
|
|||
3,1,223526800
|
||||
91,4,1123538
|
||||
2,7,263707452
|
||||
66,8,2442577
|
||||
78,12,1791593
|
||||
116,13,586792
|
||||
33,19,7654576
|
||||
73,24,1956734
|
||||
52,29,3536233
|
||||
56,31,3182520
|
||||
31,33,7967918
|
||||
15,35,30817347
|
||||
12,39,40733659
|
||||
4,47,123030942
|
||||
134,53,327110
|
||||
118,56,524360
|
||||
55,59,3236269
|
||||
44,68,5126302
|
||||
36,71,6435280
|
||||
119,72,506287
|
||||
22,77,18308136
|
||||
17,80,27243852
|
||||
18,85,26537205
|
||||
99,89,819602
|
||||
80,92,1704695
|
||||
61,96,2763830
|
||||
117,97,543960
|
||||
65,106,2461280
|
||||
19,112,24098705
|
||||
125,115,432992
|
||||
90,116,1158499
|
||||
63,117,2637247
|
||||
1,120,273736161
|
||||
77,125,1826223
|
||||
58,129,3053157
|
||||
102,134,788292
|
||||
74,147,1947811
|
||||
46,157,4950615
|
||||
225,159,7890
|
||||
159,176,141720
|
||||
130,185,370427
|
||||
245,187,1367
|
||||
16,194,29684725
|
||||
210,200,23556
|
||||
142,206,242627
|
||||
53,210,3465436
|
||||
67,211,2411001
|
||||
101,214,791197
|
||||
216,216,17866
|
||||
113,220,600370
|
||||
62,234,2733729
|
||||
172,236,91650
|
||||
201,255,34460
|
||||
60,256,2894965
|
||||
174,260,90324
|
||||
168,281,109440
|
||||
86,285,1306890
|
||||
227,287,7145
|
||||
248,290,539
|
||||
21,291,19185870
|
||||
38,301,6194947
|
||||
154,305,178401
|
||||
30,309,8632397
|
||||
153,317,182517
|
||||
110,319,638904
|
||||
141,336,263066
|
||||
233,339,5459
|
||||
104,355,760905
|
||||
189,365,52241
|
||||
13,369,38986612
|
||||
108,373,670466
|
||||
186,374,54720
|
||||
89,375,1195885
|
||||
47,377,4922975
|
||||
132,382,358375
|
||||
82,385,1615856
|
||||
200,397,36806
|
||||
41,412,5899052
|
||||
145,413,215538
|
||||
222,415,10061
|
||||
151,429,184774
|
||||
24,430,16198878
|
||||
71,432,2040203
|
||||
158,435,162816
|
||||
37,441,6276638
|
||||
175,443,82553
|
||||
150,451,188672
|
||||
32,452,7720010
|
||||
204,474,28931
|
||||
87,475,1224347
|
||||
234,503,5219
|
||||
64,517,2609213
|
||||
137,520,313250
|
||||
126,523,432982
|
||||
48,546,4265938
|
||||
49,548,4231284
|
||||
135,554,322767
|
||||
205,557,28691
|
||||
28,594,11702793
|
||||
162,597,131188
|
||||
96,607,979477
|
||||
152,624,182954
|
||||
179,625,66255
|
||||
224,626,8121
|
||||
144,633,218581
|
||||
169,636,100606
|
||||
97,647,893889
|
||||
93,651,1039357
|
||||
85,664,1352646
|
||||
11,666,48156459
|
||||
112,686,602468
|
||||
161,689,135903
|
||||
34,693,7123124
|
||||
20,722,22025239
|
||||
237,723,4610
|
||||
133,733,328377
|
||||
106,750,735077
|
||||
95,758,1010984
|
||||
136,766,322406
|
||||
70,778,2153298
|
||||
7,785,82715139
|
||||
75,786,1933759
|
||||
140,806,276830
|
||||
156,809,171639
|
||||
76,822,1928071
|
||||
8,830,71201569
|
||||
187,841,52998
|
||||
69,847,2171639
|
||||
5,862,101830140
|
||||
120,936,477351
|
||||
59,944,2957488
|
||||
207,945,27327
|
||||
173,963,90726
|
||||
209,965,25168
|
||||
81,989,1684724
|
||||
129,991,393721
|
||||
29,1023,11579200
|
||||
9,1039,60773093
|
||||
35,1040,6807047
|
||||
39,1052,6122989
|
||||
100,1058,811470
|
||||
68,1079,2218960
|
||||
105,1096,752682
|
||||
26,1108,13488903
|
||||
195,1127,46003
|
||||
10,1128,54938117
|
||||
124,1140,443639
|
||||
40,1148,5966245
|
||||
122,1161,473253
|
||||
192,1163,47907
|
||||
221,1166,11063
|
||||
214,1170,19000
|
||||
111,1209,635798
|
||||
43,1226,5640076
|
||||
51,1232,3588148
|
||||
178,1247,66890
|
||||
143,1258,223069
|
||||
229,1261,6352
|
||||
235,1275,4979
|
||||
123,1278,462546
|
||||
50,1293,3808303
|
||||
83,1312,1602570
|
||||
194,1317,46103
|
||||
149,1333,191510
|
||||
25,1336,15190900
|
||||
167,1338,113618
|
||||
199,1347,40822
|
||||
147,1357,197411
|
||||
92,1368,1114175
|
||||
181,1372,64564
|
||||
42,1376,5740497
|
||||
190,1389,51599
|
||||
98,1399,860657
|
||||
14,1411,36967078
|
||||
146,1416,204595
|
||||
84,1418,1398761
|
||||
202,1421,32137
|
||||
128,1423,401050
|
||||
223,1428,9859
|
||||
115,1431,587311
|
||||
109,1432,665488
|
||||
218,1448,16361
|
||||
103,1456,769792
|
||||
250,1460,381
|
||||
88,1466,1197564
|
||||
213,1470,20287
|
||||
131,1477,358545
|
||||
23,1480,17352076
|
||||
79,1483,1762582
|
||||
212,1484,22040
|
||||
211,1494,23237
|
||||
163,1498,126061
|
||||
6,1523,91796591
|
||||
184,1526,60390
|
||||
45,1528,5076313
|
||||
94,1530,1014380
|
||||
197,1535,44982
|
||||
242,1538,3192
|
||||
139,1551,283986
|
||||
185,1573,56269
|
||||
239,1582,3932
|
||||
220,1585,13591
|
||||
228,1588,6522
|
||||
208,1590,25538
|
||||
54,1597,3454766
|
||||
164,1599,125295
|
||||
121,1602,475515
|
||||
171,1609,97442
|
||||
191,1610,48607
|
||||
27,1621,12298812
|
||||
240,1626,3909
|
||||
138,1627,302333
|
||||
247,1636,711
|
||||
114,1638,591912
|
||||
251,1643,282
|
||||
206,1645,28423
|
||||
148,1648,194797
|
||||
72,1651,2038539
|
||||
243,1652,2854
|
||||
241,1656,3203
|
||||
155,1657,176879
|
||||
215,1669,18439
|
||||
232,1672,5467
|
||||
170,1680,97513
|
||||
196,1681,45091
|
||||
182,1683,62887
|
||||
166,1687,117365
|
||||
217,1690,16936
|
||||
177,1691,73682
|
||||
255,1692,24
|
||||
127,1700,428102
|
||||
254,1705,62
|
||||
230,1715,6260
|
||||
183,1716,61350
|
||||
107,1724,692133
|
||||
226,1727,7801
|
||||
238,1729,4434
|
||||
180,1734,64596
|
||||
157,1735,164228
|
||||
160,1737,139080
|
||||
176,1740,81019
|
||||
165,1745,122707
|
||||
198,1750,43707
|
||||
259,1753,2
|
||||
257,1754,10
|
||||
249,1755,395
|
||||
246,1757,1278
|
||||
203,1758,30079
|
||||
193,1763,46590
|
||||
253,1770,124
|
||||
188,1771,52625
|
||||
236,1772,4774
|
||||
256,1777,10
|
||||
252,1779,207
|
||||
57,1780,3095378
|
||||
258,1783,2
|
||||
244,1785,1409
|
||||
231,1793,5563
|
||||
219,1797,15811
|
1421
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/kill_sup.txt
vendored
Normal file
1421
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/kill_sup.txt
vendored
Normal file
File diff suppressed because it is too large
Load Diff
3129
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/player.txt
vendored
Normal file
3129
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/player.txt
vendored
Normal file
File diff suppressed because it is too large
Load Diff
57633
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/village.txt
vendored
Normal file
57633
internal/service/testdata/syncdata/stage1/pl181.plemiona.pl/map/village.txt
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
internal/service/testdata/syncdata/stage1/www.plemiona.pl/backend/get_servers.php
vendored
Normal file
1
internal/service/testdata/syncdata/stage1/www.plemiona.pl/backend/get_servers.php
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
a:1:{s:5:"pl181";s:25:"https://pl181.plemiona.pl";}
|
1
internal/service/testdata/syncdata/stage2/default/backend/get_servers.php
vendored
Normal file
1
internal/service/testdata/syncdata/stage2/default/backend/get_servers.php
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
a:0:{}
|
1
internal/service/testdata/syncdata/stage2/expected/players.json
vendored
Normal file
1
internal/service/testdata/syncdata/stage2/expected/players.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1
internal/service/testdata/syncdata/stage2/expected/servers.json
vendored
Normal file
1
internal/service/testdata/syncdata/stage2/expected/servers.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1
internal/service/testdata/syncdata/stage2/expected/tribe-changes.json
vendored
Normal file
1
internal/service/testdata/syncdata/stage2/expected/tribe-changes.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1
internal/service/testdata/syncdata/stage2/expected/tribes.json
vendored
Normal file
1
internal/service/testdata/syncdata/stage2/expected/tribes.json
vendored
Normal file
File diff suppressed because one or more lines are too long
1
internal/service/testdata/syncdata/stage2/expected/villages.json
vendored
Normal file
1
internal/service/testdata/syncdata/stage2/expected/villages.json
vendored
Normal file
File diff suppressed because one or more lines are too long
227
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/interface.phpget_building_info
vendored
Normal file
227
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/interface.phpget_building_info
vendored
Normal file
|
@ -0,0 +1,227 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<config>
|
||||
<main>
|
||||
<max_level>30</max_level>
|
||||
<min_level>1</min_level>
|
||||
<wood>90</wood>
|
||||
<stone>80</stone>
|
||||
<iron>70</iron>
|
||||
<pop>5</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>900</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</main>
|
||||
<barracks>
|
||||
<max_level>25</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>200</wood>
|
||||
<stone>170</stone>
|
||||
<iron>90</iron>
|
||||
<pop>7</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.28</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>1800</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</barracks>
|
||||
<stable>
|
||||
<max_level>20</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>270</wood>
|
||||
<stone>240</stone>
|
||||
<iron>260</iron>
|
||||
<pop>8</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.28</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>6000</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</stable>
|
||||
<garage>
|
||||
<max_level>15</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>300</wood>
|
||||
<stone>240</stone>
|
||||
<iron>260</iron>
|
||||
<pop>8</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.28</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>6000</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</garage>
|
||||
<snob>
|
||||
<max_level>1</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>15000</wood>
|
||||
<stone>25000</stone>
|
||||
<iron>10000</iron>
|
||||
<pop>80</pop>
|
||||
<wood_factor>2</wood_factor>
|
||||
<stone_factor>2</stone_factor>
|
||||
<iron_factor>2</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>586800</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</snob>
|
||||
<smith>
|
||||
<max_level>20</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>220</wood>
|
||||
<stone>180</stone>
|
||||
<iron>240</iron>
|
||||
<pop>20</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>6000</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</smith>
|
||||
<place>
|
||||
<max_level>1</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>10</wood>
|
||||
<stone>40</stone>
|
||||
<iron>30</iron>
|
||||
<pop>0</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>10860</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</place>
|
||||
<statue>
|
||||
<max_level>1</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>220</wood>
|
||||
<stone>220</stone>
|
||||
<iron>220</iron>
|
||||
<pop>10</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>1500</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</statue>
|
||||
<market>
|
||||
<max_level>25</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>100</wood>
|
||||
<stone>100</stone>
|
||||
<iron>100</iron>
|
||||
<pop>20</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>2700</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</market>
|
||||
<wood>
|
||||
<max_level>30</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>50</wood>
|
||||
<stone>60</stone>
|
||||
<iron>40</iron>
|
||||
<pop>5</pop>
|
||||
<wood_factor>1.25</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.245</iron_factor>
|
||||
<pop_factor>1.155</pop_factor>
|
||||
<build_time>900</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</wood>
|
||||
<stone>
|
||||
<max_level>30</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>65</wood>
|
||||
<stone>50</stone>
|
||||
<iron>40</iron>
|
||||
<pop>10</pop>
|
||||
<wood_factor>1.27</wood_factor>
|
||||
<stone_factor>1.265</stone_factor>
|
||||
<iron_factor>1.24</iron_factor>
|
||||
<pop_factor>1.14</pop_factor>
|
||||
<build_time>900</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</stone>
|
||||
<iron>
|
||||
<max_level>30</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>75</wood>
|
||||
<stone>65</stone>
|
||||
<iron>70</iron>
|
||||
<pop>10</pop>
|
||||
<wood_factor>1.252</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.24</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>1080</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</iron>
|
||||
<farm>
|
||||
<max_level>30</max_level>
|
||||
<min_level>1</min_level>
|
||||
<wood>45</wood>
|
||||
<stone>40</stone>
|
||||
<iron>30</iron>
|
||||
<pop>0</pop>
|
||||
<wood_factor>1.3</wood_factor>
|
||||
<stone_factor>1.32</stone_factor>
|
||||
<iron_factor>1.29</iron_factor>
|
||||
<pop_factor>1</pop_factor>
|
||||
<build_time>1200</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</farm>
|
||||
<storage>
|
||||
<max_level>30</max_level>
|
||||
<min_level>1</min_level>
|
||||
<wood>60</wood>
|
||||
<stone>50</stone>
|
||||
<iron>40</iron>
|
||||
<pop>0</pop>
|
||||
<wood_factor>1.265</wood_factor>
|
||||
<stone_factor>1.27</stone_factor>
|
||||
<iron_factor>1.245</iron_factor>
|
||||
<pop_factor>1.15</pop_factor>
|
||||
<build_time>1020</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</storage>
|
||||
<hide>
|
||||
<max_level>10</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>50</wood>
|
||||
<stone>60</stone>
|
||||
<iron>50</iron>
|
||||
<pop>2</pop>
|
||||
<wood_factor>1.25</wood_factor>
|
||||
<stone_factor>1.25</stone_factor>
|
||||
<iron_factor>1.25</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>1800</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</hide>
|
||||
<wall>
|
||||
<max_level>20</max_level>
|
||||
<min_level>0</min_level>
|
||||
<wood>50</wood>
|
||||
<stone>100</stone>
|
||||
<iron>20</iron>
|
||||
<pop>5</pop>
|
||||
<wood_factor>1.26</wood_factor>
|
||||
<stone_factor>1.275</stone_factor>
|
||||
<iron_factor>1.26</iron_factor>
|
||||
<pop_factor>1.17</pop_factor>
|
||||
<build_time>3600</build_time>
|
||||
<build_time_factor>1.2</build_time_factor>
|
||||
</wall>
|
||||
</config>
|
127
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/interface.phpget_config
vendored
Normal file
127
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/interface.phpget_config
vendored
Normal file
|
@ -0,0 +1,127 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<config>
|
||||
|
||||
<speed>1</speed>
|
||||
<unit_speed>1</unit_speed>
|
||||
<moral>1</moral>
|
||||
<build>
|
||||
<destroy>1</destroy>
|
||||
</build>
|
||||
<misc>
|
||||
<kill_ranking>2</kill_ranking>
|
||||
<tutorial>5</tutorial>
|
||||
<trade_cancel_time>300</trade_cancel_time>
|
||||
</misc>
|
||||
<commands>
|
||||
<millis_arrival>1</millis_arrival>
|
||||
<command_cancel_time>600</command_cancel_time>
|
||||
</commands>
|
||||
<newbie>
|
||||
<days>7</days>
|
||||
<ratio_days>60</ratio_days>
|
||||
<ratio>20</ratio>
|
||||
<removeNewbieVillages>1</removeNewbieVillages>
|
||||
</newbie>
|
||||
<game>
|
||||
<buildtime_formula>2</buildtime_formula>
|
||||
<knight>3</knight>
|
||||
<knight_new_items></knight_new_items>
|
||||
<archer>1</archer>
|
||||
<tech>2</tech>
|
||||
<farm_limit>0</farm_limit>
|
||||
<church>0</church>
|
||||
<watchtower>0</watchtower>
|
||||
<stronghold>1</stronghold>
|
||||
<fake_limit>1</fake_limit>
|
||||
<barbarian_rise>0.003</barbarian_rise>
|
||||
<barbarian_shrink>1</barbarian_shrink>
|
||||
<barbarian_max_points>2000</barbarian_max_points>
|
||||
<scavenging>1</scavenging>
|
||||
<hauls>1</hauls>
|
||||
<hauls_base>1000</hauls_base>
|
||||
<hauls_max>100000</hauls_max>
|
||||
<base_production>30</base_production>
|
||||
<event>10</event>
|
||||
<suppress_events>0</suppress_events>
|
||||
</game>
|
||||
<buildings>
|
||||
<custom_main>-1</custom_main>
|
||||
<custom_farm>-1</custom_farm>
|
||||
<custom_storage>-1</custom_storage>
|
||||
<custom_place>-1</custom_place>
|
||||
<custom_barracks>-1</custom_barracks>
|
||||
<custom_church>-1</custom_church>
|
||||
<custom_smith>-1</custom_smith>
|
||||
<custom_wood>-1</custom_wood>
|
||||
<custom_stone>-1</custom_stone>
|
||||
<custom_iron>-1</custom_iron>
|
||||
<custom_market>-1</custom_market>
|
||||
<custom_stable>-1</custom_stable>
|
||||
<custom_wall>-1</custom_wall>
|
||||
<custom_garage>-1</custom_garage>
|
||||
<custom_hide>-1</custom_hide>
|
||||
<custom_snob>-1</custom_snob>
|
||||
<custom_statue>-1</custom_statue>
|
||||
<custom_watchtower>-1</custom_watchtower>
|
||||
</buildings>
|
||||
<snob>
|
||||
<gold>1</gold>
|
||||
<cheap_rebuild>0</cheap_rebuild>
|
||||
<rise>2</rise>
|
||||
<max_dist>1000</max_dist>
|
||||
<factor>0.9</factor>
|
||||
<coin_wood>28000</coin_wood>
|
||||
<coin_stone>30000</coin_stone>
|
||||
<coin_iron>25000</coin_iron>
|
||||
<no_barb_conquer></no_barb_conquer>
|
||||
</snob>
|
||||
<ally>
|
||||
<no_harm>0</no_harm>
|
||||
<no_other_support>1</no_other_support>
|
||||
<no_other_support_type>0</no_other_support_type>
|
||||
<allytime_support>0</allytime_support>
|
||||
<no_leave>0</no_leave>
|
||||
<no_join>0</no_join>
|
||||
<limit>50</limit>
|
||||
<fixed_allies>0</fixed_allies>
|
||||
<wars_member_requirement>5</wars_member_requirement>
|
||||
<wars_points_requirement>15000</wars_points_requirement>
|
||||
<wars_autoaccept_days>7</wars_autoaccept_days>
|
||||
<levels>1</levels>
|
||||
<xp_requirements>v1</xp_requirements>
|
||||
</ally>
|
||||
<coord>
|
||||
<map_size>1000</map_size>
|
||||
<func>4</func>
|
||||
<empty_villages>70</empty_villages>
|
||||
<bonus_villages>10</bonus_villages>
|
||||
<inner>8287</inner>
|
||||
<select_start>1</select_start>
|
||||
<village_move_wait>336</village_move_wait>
|
||||
<noble_restart>1</noble_restart>
|
||||
<start_villages>1</start_villages>
|
||||
</coord>
|
||||
<sitter>
|
||||
<allow>1</allow>
|
||||
</sitter>
|
||||
<sleep>
|
||||
<active>0</active>
|
||||
<delay>60</delay>
|
||||
<min>6</min>
|
||||
<max>10</max>
|
||||
<min_awake>12</min_awake>
|
||||
<max_awake>36</max_awake>
|
||||
<warn_time>10</warn_time>
|
||||
</sleep>
|
||||
<night>
|
||||
<active>1</active>
|
||||
<start_hour>23</start_hour>
|
||||
<end_hour>8</end_hour>
|
||||
<def_factor>2</def_factor>
|
||||
<duration>14</duration>
|
||||
</night>
|
||||
<win>
|
||||
<check>5</check>
|
||||
</win>
|
||||
|
||||
</config>
|
133
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/interface.phpget_unit_info
vendored
Normal file
133
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/interface.phpget_unit_info
vendored
Normal file
|
@ -0,0 +1,133 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<config>
|
||||
<spear>
|
||||
<build_time>1020</build_time>
|
||||
<pop>1</pop>
|
||||
<speed>18</speed>
|
||||
<attack>10</attack>
|
||||
<defense>15</defense>
|
||||
<defense_cavalry>45</defense_cavalry>
|
||||
<defense_archer>20</defense_archer>
|
||||
<carry>25</carry>
|
||||
</spear>
|
||||
<sword>
|
||||
<build_time>1500</build_time>
|
||||
<pop>1</pop>
|
||||
<speed>22</speed>
|
||||
<attack>25</attack>
|
||||
<defense>50</defense>
|
||||
<defense_cavalry>15</defense_cavalry>
|
||||
<defense_archer>40</defense_archer>
|
||||
<carry>15</carry>
|
||||
</sword>
|
||||
<axe>
|
||||
<build_time>1320</build_time>
|
||||
<pop>1</pop>
|
||||
<speed>18</speed>
|
||||
<attack>40</attack>
|
||||
<defense>10</defense>
|
||||
<defense_cavalry>5</defense_cavalry>
|
||||
<defense_archer>10</defense_archer>
|
||||
<carry>10</carry>
|
||||
</axe>
|
||||
<archer>
|
||||
<build_time>1800</build_time>
|
||||
<pop>1</pop>
|
||||
<speed>18</speed>
|
||||
<attack>15</attack>
|
||||
<defense>50</defense>
|
||||
<defense_cavalry>40</defense_cavalry>
|
||||
<defense_archer>5</defense_archer>
|
||||
<carry>10</carry>
|
||||
</archer>
|
||||
<spy>
|
||||
<build_time>900</build_time>
|
||||
<pop>2</pop>
|
||||
<speed>9</speed>
|
||||
<attack>0</attack>
|
||||
<defense>2</defense>
|
||||
<defense_cavalry>1</defense_cavalry>
|
||||
<defense_archer>2</defense_archer>
|
||||
<carry>0</carry>
|
||||
</spy>
|
||||
<light>
|
||||
<build_time>1800</build_time>
|
||||
<pop>4</pop>
|
||||
<speed>10</speed>
|
||||
<attack>130</attack>
|
||||
<defense>30</defense>
|
||||
<defense_cavalry>40</defense_cavalry>
|
||||
<defense_archer>30</defense_archer>
|
||||
<carry>80</carry>
|
||||
</light>
|
||||
<marcher>
|
||||
<build_time>2700</build_time>
|
||||
<pop>5</pop>
|
||||
<speed>10</speed>
|
||||
<attack>120</attack>
|
||||
<defense>40</defense>
|
||||
<defense_cavalry>30</defense_cavalry>
|
||||
<defense_archer>50</defense_archer>
|
||||
<carry>50</carry>
|
||||
</marcher>
|
||||
<heavy>
|
||||
<build_time>3600</build_time>
|
||||
<pop>6</pop>
|
||||
<speed>11</speed>
|
||||
<attack>150</attack>
|
||||
<defense>200</defense>
|
||||
<defense_cavalry>80</defense_cavalry>
|
||||
<defense_archer>180</defense_archer>
|
||||
<carry>50</carry>
|
||||
</heavy>
|
||||
<ram>
|
||||
<build_time>4800</build_time>
|
||||
<pop>5</pop>
|
||||
<speed>30</speed>
|
||||
<attack>2</attack>
|
||||
<defense>20</defense>
|
||||
<defense_cavalry>50</defense_cavalry>
|
||||
<defense_archer>20</defense_archer>
|
||||
<carry>0</carry>
|
||||
</ram>
|
||||
<catapult>
|
||||
<build_time>7200</build_time>
|
||||
<pop>8</pop>
|
||||
<speed>30</speed>
|
||||
<attack>100</attack>
|
||||
<defense>100</defense>
|
||||
<defense_cavalry>50</defense_cavalry>
|
||||
<defense_archer>100</defense_archer>
|
||||
<carry>0</carry>
|
||||
</catapult>
|
||||
<knight>
|
||||
<build_time>21600</build_time>
|
||||
<pop>10</pop>
|
||||
<speed>10</speed>
|
||||
<attack>150</attack>
|
||||
<defense>250</defense>
|
||||
<defense_cavalry>400</defense_cavalry>
|
||||
<defense_archer>150</defense_archer>
|
||||
<carry>100</carry>
|
||||
</knight>
|
||||
<snob>
|
||||
<build_time>18000</build_time>
|
||||
<pop>100</pop>
|
||||
<speed>35</speed>
|
||||
<attack>30</attack>
|
||||
<defense>100</defense>
|
||||
<defense_cavalry>50</defense_cavalry>
|
||||
<defense_archer>100</defense_archer>
|
||||
<carry>0</carry>
|
||||
</snob>
|
||||
<militia>
|
||||
<build_time>1</build_time>
|
||||
<pop>0</pop>
|
||||
<speed>0.016666666666667</speed>
|
||||
<attack>0</attack>
|
||||
<defense>15</defense>
|
||||
<defense_cavalry>45</defense_cavalry>
|
||||
<defense_archer>25</defense_archer>
|
||||
<carry>0</carry>
|
||||
</militia>
|
||||
</config>
|
282
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/ally.txt
vendored
Normal file
282
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/ally.txt
vendored
Normal file
|
@ -0,0 +1,282 @@
|
|||
1,Konfederacja,CSA-X,50,9722,80591153,85672571,1
|
||||
4,Farmerzy,Farma,1,2,9811,9811,125
|
||||
7,Spoceni+Kuzyni,KUZYNI,39,4721,39582695,39582695,4
|
||||
8,W+O+W,WOW,10,10,26603,26603,90
|
||||
12,AveMy,AveMy,2,1,6060,6060,144
|
||||
13,FarmerzyPremium,P.P,1,1,490,490,214
|
||||
19,Wojna+Domowa+Centrum,%2AWDC%2A,2,1,129,129,239
|
||||
24,Anonymous,IT,17,21,70935,70935,63
|
||||
29,Elitarne+plemie+zbieraczy+PP,EPZPP,50,122,487760,490595,32
|
||||
31,Project+D,PD,20,28,72338,72338,62
|
||||
33,Towarzystwo+Wzajemnej+Asekuracji,TWA,25,62,248240,248240,44
|
||||
35,MotoMyszy.,MzM,48,4090,35366910,35967206,6
|
||||
39,OZDR+%2B+Why,Ozdr%40,27,342,2415762,2415762,15
|
||||
47,Konfederacja+Z,CSA-Z,48,9596,77915569,82611770,2
|
||||
53,Zakon+Zielonego+Li%C5%9Bcia,420,1,13,50577,50577,71
|
||||
56,Pot%C4%99%C5%BCne+Pelikany,%2APP%2A,1,1,678,678,205
|
||||
59,Znani+i+Nieznani,ZiN,9,10,18104,18104,105
|
||||
68,Obro%C5%84cy+Cadii,Cadia,20,104,490637,490637,31
|
||||
71,why+so+serious,Why%3F,26,1160,10008304,10008304,10
|
||||
72,Dinozaury,DINO,3,5,16182,16182,108
|
||||
77,Wyznawcy+Darksizmu,-WzDa-,5,5,3948,3948,160
|
||||
80,Legion,-LM-,13,31,162555,162555,49
|
||||
85,Motomyszy,MzM.,50,4622,39147296,40987712,5
|
||||
89,FRIENDOLINOS,OG,2,0,182,182,233
|
||||
92,MotoMyszy%21,MzM%21,1,1,3421,3421,165
|
||||
96,Zakon+Czerwonej+R%C3%B3%C5%BCy,Z.C.R,12,13,19300,19300,101
|
||||
97,FARMERZY+PLEMION,FARME,1,6,23599,23599,95
|
||||
106,GWIEZDNA+FEDERACJA,GF,24,342,1922259,1922259,16
|
||||
112,co%C5%9B+wi%C4%99cej,CW,4,3,1131,1131,194
|
||||
115,zgierzanie,zgr,1,7,46100,46100,75
|
||||
117,Przybysze+z+kosmosu,Pzk,5,5,19943,19943,100
|
||||
120,Orkowi+Zawodnicy+Dominuj%C4%85+Rybki,OZDR,49,5538,47095138,48430662,3
|
||||
125,Szcz%C4%99%C5%9Bliwi+Gracze,SG,4,6,33644,33644,85
|
||||
129,PREM,Punkty,5,19,24990,24990,93
|
||||
134,DarNocy,DN,1,5,31116,31116,87
|
||||
147,Bandycka+Elita+Niskoros%C5%82ych,BENIS,1,0,0,0,258
|
||||
157,Domino,Dom,34,181,930020,930020,25
|
||||
159,Oggr,Ogg,1,0,400,400,215
|
||||
176,Albanski+Raj,AR,2,6,42674,42674,78
|
||||
185,NISZCZYCIELE,%7CN%7C,1,0,0,0,259
|
||||
187,Champions+League,-ChL-,1,0,347,347,220
|
||||
194,Vis+Maior,VS,17,151,830193,830193,26
|
||||
200,Takie+tam,Ttm.,1,0,561,561,211
|
||||
206,Pppp,P..p,1,0,578,578,210
|
||||
210,NoPon,N-P,48,69,208123,209067,47
|
||||
211,%2APotrzymaj+mi+Piwo,%2APmP,2,5,18368,18368,104
|
||||
214,Armia+Bosmana,BOSMAN,3,3,4308,4308,157
|
||||
216,Plemie+Igora,P.L.I,1,0,0,0,260
|
||||
220,Amatorzy+Kiszonych+Og%C3%B3rk%C3%B3w,ALKO,3,3,2264,2264,177
|
||||
234,Pepeki123,pepek,24,28,82699,82699,57
|
||||
236,Nakr%C4%99cane+Myszy,NM,1,0,262,262,226
|
||||
255,-QED-,QED,1,3,23228,23228,96
|
||||
256,GET+this+osada,GETTO,1,1,2552,2552,172
|
||||
260,B%C5%82%C4%99kitna+Planeta,%2ABP%2A,1,0,5873,5873,146
|
||||
281,Liga+Mistrzow,LM,1,3,5950,5950,145
|
||||
285,Kompletnie+Bezsensowne+Plemi%C4%99+xD,KBS,17,52,216187,216187,46
|
||||
287,fififi,fi,1,3,10461,10461,122
|
||||
290,Komercja+Plemionn,K+-+P,1,0,197,197,231
|
||||
291,MotoMyszy%3F,.Mzm.,47,2600,19944126,20492470,8
|
||||
301,Psycho+szczury,MzM..,36,1860,14082725,14082725,9
|
||||
305,Pro+Sto,Pro,1,1,7528,7528,136
|
||||
309,Konfederacja+Y,CSA-Y,15,1002,8457463,8457463,11
|
||||
317,Szalone+Nied%C5%BAwiedzie,Mi%C5%9Bki,1,0,4609,4609,156
|
||||
319,PAKT,PAKT,2,2,6323,6323,143
|
||||
336,hkgj,kw,1,0,0,0,261
|
||||
339,ZARZEW,ZRW,1,0,2804,2804,169
|
||||
355,uuuuuuuuuuuuuuu,uuu,1,0,4128,4128,159
|
||||
365,GIE%C5%81DA,GA,1,0,8516,8516,129
|
||||
369,0rkowi+Zawodnicy+Dominuj%C4%85+Rybki,0ZDR,36,3034,26181329,26181329,7
|
||||
373,Gildia+Kupiecka,GK,2,3,13810,13810,115
|
||||
374,xyz.,xyz.,1,0,901,901,197
|
||||
375,PePeKi+PP.PP,PKTPP,17,16,39813,39813,80
|
||||
377,AKADEMIA+WD,AWD,24,25,54591,54591,68
|
||||
382,HANDEL,HANDEL,1,1,2203,2203,178
|
||||
385,Bia%C5%82a+Armia,B.A,5,17,81013,81013,58
|
||||
397,Emka,E.M.,1,1,1170,1170,193
|
||||
412,BOMBA,BOMBA,22,110,411596,411596,35
|
||||
413,Giht,Hggf,1,1,1374,1374,189
|
||||
415,.%3Axxx%3A.,xxxx,1,0,26,26,247
|
||||
429,Zabi+Staw,Z-S,1,0,855,855,199
|
||||
430,%2A%2AWojna+Idei%2A%2A,%2A%2AWD%2A%2A,1,0,0,0,262
|
||||
432,McOpole,McOpo,21,210,1263914,1263914,21
|
||||
435,ave+sieci,sieci,1,1,4647,4647,155
|
||||
441,Project+D%21,PD%21,24,45,103116,103116,55
|
||||
443,PEAKY+BLINDERS,PB,1,0,0,0,263
|
||||
451,AVE+%28M%29,AVE%28M%29,1,0,173,173,234
|
||||
452,Obro%C5%84cy+Krasnali+Ogroduwych,OKO,50,111,389742,392037,36
|
||||
474,zagubiony+natanek,wul,1,0,536,536,212
|
||||
475,Zbieracze+Punktow+Premium,Z%2AP%2AP,2,2,9372,9372,128
|
||||
503,TMPL,TMP,1,1,2332,2332,176
|
||||
517,M%C3%B3j+Dom,%3D+MD+%3D,2,1,1204,1204,191
|
||||
520,ESSA,ESSA,2,6,25610,25610,92
|
||||
523,Wiocha,Yuby,1,0,280,280,223
|
||||
546,WOJNA+IDEI,WD,1,1,50,50,246
|
||||
548,Co+Chcesz%3F,CO,1,1,317,317,222
|
||||
554,%3Dpremium%3D,pp.,3,2,4850,4850,154
|
||||
557,WYROLOWANI,WYROL,1,5,39927,39927,79
|
||||
594,T+E+R+Y+T+O+R+I+U+M,%5DT%5B,4,4,13708,13708,116
|
||||
597,Bractwo+Krzy%C5%BCowe,%2BBK%2B,2,1,7686,7686,133
|
||||
607,NAJEMNICY.,N%2FM%2FY,5,22,96031,96031,56
|
||||
624,K35+DEMONY,K35,1,3,19050,19050,103
|
||||
625,Wilki,Wilki,1,0,887,887,198
|
||||
626,Targowica,Targ,1,3,11298,11298,120
|
||||
633,Wolny,WS,1,16,80649,80649,59
|
||||
636,Superpremium,%28%24%29,5,5,5393,5393,149
|
||||
647,Ow%C5%82osione+Rogale,OwR,7,11,36541,36541,82
|
||||
651,Semper+Invicta,Sempe,3,4,12098,12098,119
|
||||
664,Kal-Kol,K+L+N,3,2,7408,7408,137
|
||||
666,KOM0RNICY+2,KOM2,27,502,3623764,3623764,13
|
||||
686,Semper+Invicta.,Semp.,3,2,3186,3186,167
|
||||
689,Ga%C5%9Bnice+Po%C5%BCarowe+Stra%C5%BCaka,GPS%21,1,0,132,132,238
|
||||
693,Why+So+Serious%3F,Why,1,0,0,0,264
|
||||
722,Bractwo+Nocnych+Polan,BNP,30,194,1057120,1057120,22
|
||||
723,Raki+nie+boraki,Rnb,1,1,2771,2771,170
|
||||
733,Kuzyni+2,KUZYNA,1,1,26,26,248
|
||||
750,Moje+OHV,OHV,1,0,277,277,224
|
||||
758,-300-,-300-,5,6,13864,13864,114
|
||||
766,%2AAnonymous%2A,%2AAMS%2A,1,0,0,0,265
|
||||
778,Imperium+Polskie,IP,12,11,29666,29666,88
|
||||
785,KOMORNICY3,KOM3,37,744,5127712,5127712,12
|
||||
786,JP2+2137,21%3A37,7,48,259042,259042,42
|
||||
806,Cesarstwo+Zachodnio+Rzymskie,SPQR,1,0,26,26,249
|
||||
809,NOC3,NOC3,1,0,367,367,218
|
||||
822,%2AGramy+Dla+Zabawy%2A%2A,%2AGDZ%2A%2A,2,10,42703,42703,77
|
||||
830,Komornicy,KOM1,3,13,74502,74502,61
|
||||
841,PP+Pan+Dziobak,PEPE,1,1,771,771,202
|
||||
847,Nowa+nadzieja,Nowa,35,120,361076,361076,39
|
||||
862,IMPERIUM+%2B,.%3A%2B%3A.,31,280,1738908,1738908,18
|
||||
936,Gracz+bula9001+zablokowa%C5%82+ci%C4%99.,bula90,1,8,77623,77623,60
|
||||
944,YOGI,YOGI,7,14,60146,60146,66
|
||||
945,Brygada+RR,RR,1,0,726,726,204
|
||||
963,Grupa+Amerykanka,GAZ,2,2,2349,2349,174
|
||||
965,Kamilanie+Gora,KG,1,0,1878,1878,179
|
||||
989,KOMORNICYX,KOMX,2,1,9905,9905,124
|
||||
991,Ordo+Theutonicorum,OT,1,0,0,0,266
|
||||
1023,AWANGARDA,.%29A%28.,3,14,53881,53881,69
|
||||
1039,IMPERIUM+%2B%2B,%3A%2B%3A,11,107,569479,569479,30
|
||||
1040,We+Are+Ready%21,WAR%21,2,3,18048,18048,106
|
||||
1052,Gachi+Frens,-%3DGF%3D-,11,28,141286,141286,51
|
||||
1058,Powa%C5%BCneUgrupowanieBy%C5%82ychGraczy,PUBG,1,1,10021,10021,123
|
||||
1079,Rycerze+Czerwonego+Tartanu,RCT,6,56,374051,374051,37
|
||||
1096,DNR+F,ACHTUN,4,7,39593,39593,81
|
||||
1108,K0MORNICY4,KOM4,12,68,334647,334647,40
|
||||
1127,BLOCKCHAIN,CRYPTO,1,8,50239,50239,72
|
||||
1128,Nazwa+b%C4%99dzie+wkr%C3%B3tce,NBW,16,80,415954,415954,34
|
||||
1140,0.7+zg%C5%82o%C5%9B+si%C4%99,POLEJ,8,135,1020829,1020829,24
|
||||
1148,HELLGATE,%2AHG%2A,9,61,237863,237863,45
|
||||
1161,Ose%C5%82ka,OS.,1,2,13553,13553,117
|
||||
1163,Kl8F,Klasa8,2,2,12795,12795,118
|
||||
1166,Dybuk,Dybuk,1,3,19291,19291,102
|
||||
1170,Nono,Nnn,1,0,0,0,267
|
||||
1209,Komandosi+na+5,KOM5,2,5,20529,20529,99
|
||||
1226,Cartel+TW,Cartel,40,477,3232718,3232718,14
|
||||
1232,Braty+i+Kompany,BiK,4,4,1437,1437,187
|
||||
1247,%C5%BCydek+natanek,qwq,1,0,261,261,227
|
||||
1258,Bum%21,Bum%21,1,0,128,128,240
|
||||
1261,Ujazdowcy,UJ,1,2,6741,6741,141
|
||||
1275,CSA-ATAK,CSA-AT,1,0,26,26,250
|
||||
1278,Waffen-SS,W-SS,1,3,7237,7237,139
|
||||
1293,youll+never+walk+alone,ynwa,11,50,302223,302223,41
|
||||
1312,Purpurowi+Zegarmistrze+%C5%9Awiat%C5%82a,ZEGARY,46,185,707516,708850,28
|
||||
1317,1edc,1edc,1,0,26,26,251
|
||||
1333,Grupa+Wsparcia+Amator%C3%B3w,GWA,1,0,814,814,200
|
||||
1336,Scandi+Power,SCP,21,266,1529373,1529373,19
|
||||
1338,weee,wg,1,0,0,0,268
|
||||
1347,BezCov,B-C,3,2,1827,1827,181
|
||||
1357,J.+B.+B....,JBB%3B%2F,1,0,0,0,269
|
||||
1368,Elitarny+Legion,ELITA,2,18,68427,68427,64
|
||||
1372,WIDMO,WIDMO,1,0,0,0,270
|
||||
1376,Wojna+Idei+P,WDP,1,1,628,628,208
|
||||
1389,dfbdfbd,db,1,0,4958,4958,153
|
||||
1399,Bojk%C3%B3w,_B_,3,6,36117,36117,83
|
||||
1411,HURAGAN,Tajfun,28,255,1414392,1414392,20
|
||||
1416,Z%C5%82odzieje+Przysz%C5%82o%C5%9Bci,%3DZP%3D,1,1,1857,1857,180
|
||||
1418,Plemi%C4%99+Rodu+Smoka,PRS,3,22,174240,174240,48
|
||||
1421,Dla+fanu+pykamy,DFP,1,0,1674,1674,184
|
||||
1423,Grupa+Armii+%C5%9Arodek,%C5%9Arodek,2,11,52902,52902,70
|
||||
1428,Wodne+zwierzaczki,WZ,1,3,17761,17761,107
|
||||
1431,Amanita+Muscaria,A-M,3,2,1513,1513,186
|
||||
1432,Nasze+Plemie,ABW,1,1,1675,1675,183
|
||||
1448,myself,%3DMf%3D,1,0,0,0,271
|
||||
1456,1-2-0,1x2,2,2,10863,10863,121
|
||||
1460,bobertos,ZIOM,2,1,200,200,230
|
||||
1466,GREEN+STREET+HOOLIGANS,GSH,7,20,113693,113693,54
|
||||
1470,SunnyValley,SV,1,6,45642,45642,76
|
||||
1477,Do+ko%C5%84ca%21,DK%21,1,1,360,360,219
|
||||
1480,KUZYN+X,KUZYN%3F,15,331,1765223,1765223,17
|
||||
1483,Afrika+Korps,AK,1,0,0,0,272
|
||||
1484,INVISIBLE,IV,1,0,26,26,252
|
||||
1494,Wioska+Matrix9105%40,Matrix,1,0,0,0,273
|
||||
1498,Kokoko,KKK7,1,0,2870,2870,168
|
||||
1523,Ty+i+Twoje+orzeszki,T.T,26,115,655456,655456,29
|
||||
1526,Polanie,Polani,1,0,0,0,274
|
||||
1528,NieZniszczalni.,NZ,3,3,2617,2617,171
|
||||
1530,S%C5%81OWIANIE,S%C5%81OWO,3,3,6555,6555,142
|
||||
1535,The+Gorillas,GOR,2,26,142004,142004,50
|
||||
1538,Ho+no+tu,SOO,1,2,7382,7382,138
|
||||
1551,Siewca+Wiatru,%7ESW%7E,7,14,49245,49245,73
|
||||
1573,DUCHY,DUCH,11,10,9541,9541,127
|
||||
1582,Ca%C5%82e+%C5%BBycie+z+Wariatami,WARIAT,1,1,8160,8160,132
|
||||
1585,SAM+WE+M%C5%81YNIE,SWM,1,0,744,744,203
|
||||
1588,Moment+Strategiczny,no+c%C3%B3%C5%BC,1,12,59739,59739,67
|
||||
1590,Bo+od+tylu+tez+jest+fajnie,Xes,5,5,3318,3318,166
|
||||
1597,Kontra,Kontra,42,181,807847,815265,27
|
||||
1599,ma%C5%82e+ciche+do+g%C4%99siej+szyji,mcgs,1,0,369,369,217
|
||||
1602,Uuuu,Uuy,1,1,3854,3854,163
|
||||
1609,asdd,das,1,0,0,0,275
|
||||
1610,Kombinat+Punkkt%C3%B3w+Premium,KPP,1,0,138,138,237
|
||||
1621,Rolnicy+Podlasie,RP,11,186,1025745,1025745,23
|
||||
1626,JazdaZKuramk,JZK,1,0,0,0,276
|
||||
1627,ANONYMOUSS,ANS,15,43,114308,114308,53
|
||||
1636,GDZIE+S%C4%84+%3F%3F%3F,MA%C5%81YSZ,1,1,4193,4193,158
|
||||
1638,asyy,asyy,1,0,26,26,253
|
||||
1643,1112,12,1,0,0,0,277
|
||||
1645,Rekontakt,REK,2,3,8492,8492,130
|
||||
1648,Aldente,Ald,1,1,338,338,221
|
||||
1651,Oszukani,New,2,1,3936,3936,161
|
||||
1652,%C5%81omocimy,Zaj%C4%99nc,1,7,15985,15985,109
|
||||
1656,Robotniczy+Klub+Sportowy+HUWDU,HUWDU,1,1,270,270,225
|
||||
1657,Xyz%2C,Xyz%2C,1,0,513,513,213
|
||||
1669,Mocny+FULL,FULL,4,6,14440,14440,113
|
||||
1672,MKM.,MKM.,1,2,9572,9572,126
|
||||
1680,Mymu,My,2,4,27342,27342,89
|
||||
1681,fehg,wwerj,1,0,0,0,278
|
||||
1683,......,FIN,1,9,49140,49140,74
|
||||
1687,SoSKooperacja,SoS,7,7,15033,15033,112
|
||||
1690,Nie%C5%9Bmiertelni,ookp,1,1,2343,2343,175
|
||||
1691,Zbieram+flagi,Zbf,1,4,7533,7533,135
|
||||
1692,Zapraszam+ch%C4%99tnych,Buuu,1,1,5178,5178,150
|
||||
1700,Fiku+Miku,FIUFIU,4,71,373191,373191,38
|
||||
1705,Galaktyczna+Federacja+%C5%9Awiat%C5%82a,GF+II,1,1,1671,1671,185
|
||||
1707,Koniec,1234,1,1,26,26,254
|
||||
1715,R-C-,RC,1,2,5005,5005,152
|
||||
1716,KOMORNIKI,KOMY,2,4,34258,34258,84
|
||||
1721,Pocahontas,Gg,1,2,5770,5770,147
|
||||
1724,Punkty+Premium+i+Flagi,Witamy,36,63,255952,255952,43
|
||||
1727,Lykanie,LK,1,0,0,0,279
|
||||
1728,fffff,fffff,1,1,3440,3440,164
|
||||
1729,Gallowo,GAL,1,7,15214,15214,111
|
||||
1734,Woir,Wrrrr,1,1,5703,5703,148
|
||||
1735,Strong+Ekipa,SE,32,118,416675,416675,33
|
||||
1737,Samiec+Alfa,Alfa,1,0,0,0,280
|
||||
1740,T.W.,%3DTW%3D,1,19,122227,122227,52
|
||||
1745,Dni+w+Plemieniu,DWP,1,2,15245,15245,110
|
||||
1750,CZY+TO+X%3F,Xx,1,0,0,0,281
|
||||
1751,xddd,xddd,1,0,68,68,244
|
||||
1753,eeee,eeee,1,1,810,810,201
|
||||
1754,PogromcY,PY,1,1,1184,1184,192
|
||||
1755,cudo,C%21%21,1,1,1111,1111,195
|
||||
1757,Lublin,LUB,1,1,1400,1400,188
|
||||
1758,Oddam+wioski,OW,1,5,26349,26349,91
|
||||
1760,Qwer,Qwe,1,4,8366,8366,131
|
||||
1763,Altra,ALR,1,5,24623,24623,94
|
||||
1764,Traktor,TRK,1,1,26,26,255
|
||||
1770,ooooo,ooo,1,1,153,153,236
|
||||
1771,WD40,30,1,2,7046,7046,140
|
||||
1772,Jdhd,Hdhdh,1,1,2516,2516,173
|
||||
1777,Chlip,CHP,1,1,998,998,196
|
||||
1779,1905,CWKS,1,2,7537,7537,134
|
||||
1780,Lololololol,Lol,2,0,0,0,282
|
||||
1782,disco,dsc,1,1,676,676,206
|
||||
1783,Niszczycielski+Akwedukt,NA,2,2,1747,1747,182
|
||||
1785,HELLO,HELLO,2,2,1343,1343,190
|
||||
1786,Pomy%C5%9Bl+zanim+kopniesz+Qunia,Q%C5%84.,1,1,3883,3883,162
|
||||
1787,WCF+%21,WCF,1,1,26,26,256
|
||||
1790,Kruk,-KR-,1,8,33111,33111,86
|
||||
1791,Wymiana,Flagi,1,1,26,26,257
|
||||
1792,Winners,Win,1,1,383,383,216
|
||||
1793,Sam1,Sam1,1,11,67586,67586,65
|
||||
1795,Kukabaka,kUKLA,2,2,603,603,209
|
||||
1797,Mi%C5%82o%C5%9Bnicy+Taniego+Piwa,Browar,18,19,21896,21896,97
|
||||
1798,Gggg,Ggg,1,1,5029,5029,151
|
||||
1799,Kkkkk,Kkkkk,2,2,52,52,245
|
||||
1802,weRFAS,DFSAFS,2,2,103,103,241
|
||||
1803,czarnuchowo,WPDS,1,1,162,162,235
|
||||
1804,12345,12345,3,3,78,78,243
|
||||
1806,Kto+zjad%C5%82+ciastka%3F,KZC%3F,1,1,221,221,228
|
||||
1807,ZaPPFrakcja+W,CSA-W,1,0,668,668,207
|
||||
1808,LECOQ,LECOQ,1,3,20719,20719,98
|
||||
1809,Vexel,Vexel,1,1,191,191,232
|
||||
1810,Sobie+Sam,SS,1,1,201,201,229
|
||||
1811,DziKusY,Dzk,2,2,103,103,242
|
2562
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/kill_all.txt
vendored
Normal file
2562
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/kill_all.txt
vendored
Normal file
File diff suppressed because it is too large
Load Diff
263
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/kill_all_tribe.txt
vendored
Normal file
263
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/kill_all_tribe.txt
vendored
Normal file
|
@ -0,0 +1,263 @@
|
|||
2,1,518573688
|
||||
98,4,1148596
|
||||
3,7,513901496
|
||||
68,8,2934283
|
||||
82,12,1995450
|
||||
118,13,650623
|
||||
34,19,11791705
|
||||
79,24,2170371
|
||||
56,29,4083236
|
||||
62,31,3582008
|
||||
35,33,11535004
|
||||
8,35,117907676
|
||||
11,39,90994883
|
||||
4,47,467872721
|
||||
144,53,328407
|
||||
119,56,632131
|
||||
61,59,3643561
|
||||
45,68,7073381
|
||||
29,71,17132708
|
||||
126,72,544908
|
||||
25,77,24603199
|
||||
21,80,36196035
|
||||
7,85,121654301
|
||||
104,89,936121
|
||||
85,92,1913549
|
||||
71,96,2816660
|
||||
122,97,598608
|
||||
55,106,4489957
|
||||
22,112,30162886
|
||||
132,115,476582
|
||||
67,117,3041909
|
||||
1,120,575766755
|
||||
83,125,1945540
|
||||
64,129,3421838
|
||||
95,134,1255473
|
||||
81,147,2028269
|
||||
49,157,6376060
|
||||
209,159,35302
|
||||
167,176,158224
|
||||
139,185,377805
|
||||
251,187,1367
|
||||
20,194,38570320
|
||||
225,200,23586
|
||||
151,206,242627
|
||||
59,210,3760105
|
||||
70,211,2893518
|
||||
101,214,993612
|
||||
213,216,32443
|
||||
120,220,630577
|
||||
66,234,3106000
|
||||
182,236,91702
|
||||
211,255,35260
|
||||
50,256,6123731
|
||||
178,260,101651
|
||||
170,281,140209
|
||||
87,285,1526835
|
||||
233,287,11666
|
||||
253,290,539
|
||||
17,291,63046795
|
||||
18,301,54807871
|
||||
158,305,198650
|
||||
16,309,65460188
|
||||
164,317,182517
|
||||
115,319,708504
|
||||
149,336,267052
|
||||
242,339,5461
|
||||
112,355,760905
|
||||
200,365,52241
|
||||
5,369,177967660
|
||||
114,373,711036
|
||||
197,374,54819
|
||||
89,375,1417749
|
||||
52,377,5516679
|
||||
141,382,359638
|
||||
86,385,1780581
|
||||
207,397,36806
|
||||
40,412,7844341
|
||||
156,413,215538
|
||||
235,415,10061
|
||||
163,429,184774
|
||||
27,430,19841316
|
||||
41,432,7710423
|
||||
159,435,197777
|
||||
46,441,7053877
|
||||
184,443,83584
|
||||
161,451,188672
|
||||
38,452,9604806
|
||||
218,474,28931
|
||||
96,475,1255265
|
||||
238,503,7494
|
||||
72,517,2615421
|
||||
134,520,454684
|
||||
136,523,437089
|
||||
43,546,7268867
|
||||
42,548,7387675
|
||||
146,554,322799
|
||||
217,557,29930
|
||||
30,594,16158300
|
||||
172,597,139493
|
||||
91,607,1329820
|
||||
162,624,185431
|
||||
193,625,66255
|
||||
236,626,8121
|
||||
147,633,269857
|
||||
168,636,149408
|
||||
103,647,991269
|
||||
97,651,1202654
|
||||
90,664,1371321
|
||||
14,666,67663161
|
||||
117,686,672292
|
||||
174,689,135903
|
||||
33,693,13927849
|
||||
23,722,28486103
|
||||
246,723,4620
|
||||
128,733,512496
|
||||
107,750,876738
|
||||
94,758,1256466
|
||||
140,766,365059
|
||||
78,778,2174294
|
||||
10,785,107688398
|
||||
63,786,3554001
|
||||
131,806,476872
|
||||
165,809,171639
|
||||
77,822,2340609
|
||||
12,830,87500446
|
||||
190,841,69410
|
||||
75,847,2499022
|
||||
6,862,137050699
|
||||
84,936,1940894
|
||||
65,944,3297382
|
||||
223,945,27441
|
||||
179,963,97544
|
||||
222,965,27527
|
||||
74,989,2543700
|
||||
129,991,500661
|
||||
32,1023,14775879
|
||||
13,1039,85035694
|
||||
36,1040,11104753
|
||||
44,1052,7076030
|
||||
108,1058,863124
|
||||
58,1079,3828584
|
||||
110,1096,792047
|
||||
28,1108,17765763
|
||||
183,1127,83875
|
||||
15,1128,66590221
|
||||
48,1140,6606194
|
||||
39,1148,8067345
|
||||
100,1161,996140
|
||||
187,1163,77166
|
||||
234,1166,11428
|
||||
221,1170,27655
|
||||
106,1209,886014
|
||||
37,1226,10190721
|
||||
57,1232,3875472
|
||||
192,1247,66890
|
||||
153,1258,223069
|
||||
230,1261,13732
|
||||
137,1275,399365
|
||||
130,1278,481948
|
||||
53,1293,4834337
|
||||
76,1312,2363357
|
||||
204,1317,46145
|
||||
160,1333,197267
|
||||
26,1336,20414438
|
||||
177,1338,113620
|
||||
176,1347,125259
|
||||
152,1357,224264
|
||||
93,1368,1288589
|
||||
191,1372,68452
|
||||
47,1376,6847914
|
||||
201,1389,51601
|
||||
102,1399,992741
|
||||
19,1411,47947434
|
||||
157,1416,214684
|
||||
69,1418,2914447
|
||||
210,1421,35273
|
||||
133,1423,471241
|
||||
121,1428,630185
|
||||
123,1431,594841
|
||||
113,1432,733473
|
||||
169,1448,149206
|
||||
111,1456,785196
|
||||
255,1460,381
|
||||
88,1466,1450455
|
||||
127,1470,528181
|
||||
142,1477,358992
|
||||
24,1480,26541802
|
||||
80,1483,2062188
|
||||
226,1484,22060
|
||||
216,1494,30432
|
||||
175,1498,126080
|
||||
9,1523,117452472
|
||||
185,1526,81749
|
||||
51,1528,5769388
|
||||
99,1530,1117026
|
||||
199,1535,52879
|
||||
249,1538,3192
|
||||
138,1551,395786
|
||||
196,1573,56642
|
||||
247,1582,3987
|
||||
229,1585,13876
|
||||
214,1588,31524
|
||||
224,1590,26580
|
||||
54,1597,4762478
|
||||
166,1599,165273
|
||||
109,1602,805496
|
||||
180,1609,97494
|
||||
202,1610,48607
|
||||
31,1621,16042983
|
||||
231,1626,13439
|
||||
143,1627,334012
|
||||
154,1636,221031
|
||||
116,1638,699804
|
||||
244,1643,4920
|
||||
212,1645,33370
|
||||
92,1648,1299521
|
||||
73,1651,2577567
|
||||
150,1652,261207
|
||||
243,1656,5332
|
||||
155,1657,215830
|
||||
208,1669,36495
|
||||
241,1672,5468
|
||||
148,1680,267604
|
||||
189,1681,69556
|
||||
194,1683,64961
|
||||
173,1687,137468
|
||||
228,1690,16936
|
||||
188,1691,74062
|
||||
227,1692,17669
|
||||
125,1700,575954
|
||||
258,1705,62
|
||||
239,1715,6946
|
||||
124,1716,584874
|
||||
232,1721,12907
|
||||
105,1724,934176
|
||||
237,1727,7801
|
||||
240,1729,6680
|
||||
195,1734,64596
|
||||
135,1735,454224
|
||||
171,1737,140112
|
||||
186,1740,81233
|
||||
145,1745,323681
|
||||
205,1750,43707
|
||||
263,1753,2
|
||||
262,1754,10
|
||||
254,1755,395
|
||||
252,1757,1278
|
||||
215,1758,30731
|
||||
220,1760,27699
|
||||
203,1763,46599
|
||||
257,1770,124
|
||||
198,1771,54425
|
||||
245,1772,4774
|
||||
261,1777,10
|
||||
256,1779,207
|
||||
60,1780,3660507
|
||||
259,1783,52
|
||||
250,1785,1705
|
||||
206,1790,43136
|
||||
181,1793,97199
|
||||
260,1795,40
|
||||
219,1797,28823
|
||||
248,1808,3755
|
1978
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/kill_att.txt
vendored
Normal file
1978
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/kill_att.txt
vendored
Normal file
File diff suppressed because it is too large
Load Diff
214
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/kill_att_tribe.txt
vendored
Normal file
214
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/kill_att_tribe.txt
vendored
Normal file
|
@ -0,0 +1,214 @@
|
|||
2,1,197811951
|
||||
162,4,7808
|
||||
4,7,134191270
|
||||
91,8,155525
|
||||
113,12,71331
|
||||
118,13,63826
|
||||
29,19,3109409
|
||||
81,24,205544
|
||||
60,29,426082
|
||||
68,31,271134
|
||||
99,33,128802
|
||||
6,35,68371296
|
||||
8,39,38636284
|
||||
1,47,237866835
|
||||
188,53,1297
|
||||
102,56,107411
|
||||
108,59,90043
|
||||
44,68,1097666
|
||||
15,71,8857798
|
||||
132,72,38620
|
||||
34,77,2196064
|
||||
25,80,4699158
|
||||
5,85,86384602
|
||||
105,89,94543
|
||||
80,92,208853
|
||||
128,96,40098
|
||||
136,97,33470
|
||||
39,106,1608248
|
||||
38,112,1711002
|
||||
141,115,25141
|
||||
145,117,21965
|
||||
3,120,140311413
|
||||
100,125,110559
|
||||
110,129,82762
|
||||
62,134,397211
|
||||
111,147,80447
|
||||
61,157,418012
|
||||
151,176,16504
|
||||
165,185,7378
|
||||
31,194,2617133
|
||||
209,200,30
|
||||
85,210,178718
|
||||
71,211,257208
|
||||
126,214,41525
|
||||
212,216,12
|
||||
160,220,8278
|
||||
65,234,362768
|
||||
203,236,52
|
||||
33,256,2264454
|
||||
155,260,10522
|
||||
90,285,160904
|
||||
174,287,4521
|
||||
9,291,37122902
|
||||
11,301,27416924
|
||||
147,305,19292
|
||||
10,309,36519242
|
||||
117,319,67239
|
||||
177,336,3986
|
||||
7,369,59026086
|
||||
127,373,40352
|
||||
201,374,99
|
||||
78,375,212543
|
||||
67,377,331213
|
||||
197,382,291
|
||||
92,385,153097
|
||||
52,412,653722
|
||||
32,430,2549096
|
||||
24,432,5119612
|
||||
146,435,20699
|
||||
55,441,609532
|
||||
191,443,1031
|
||||
48,452,725521
|
||||
137,475,30918
|
||||
184,503,2275
|
||||
171,517,4826
|
||||
96,520,137000
|
||||
175,523,4107
|
||||
35,546,2097153
|
||||
41,548,1309325
|
||||
208,554,32
|
||||
189,557,1239
|
||||
37,594,1766507
|
||||
159,597,8289
|
||||
74,607,222168
|
||||
182,624,2475
|
||||
122,633,51266
|
||||
123,636,48384
|
||||
112,647,72783
|
||||
97,651,136651
|
||||
149,664,18675
|
||||
17,666,8136342
|
||||
119,686,61938
|
||||
23,693,5125520
|
||||
27,722,3745388
|
||||
95,733,141728
|
||||
107,750,91301
|
||||
77,758,212637
|
||||
129,766,40018
|
||||
153,778,16261
|
||||
16,785,8763144
|
||||
58,786,492119
|
||||
83,806,187855
|
||||
76,822,214844
|
||||
20,830,6182634
|
||||
152,841,16412
|
||||
73,847,249481
|
||||
12,862,18925685
|
||||
40,936,1367259
|
||||
72,944,249585
|
||||
199,945,114
|
||||
168,963,6190
|
||||
183,965,2359
|
||||
49,989,702186
|
||||
104,991,99680
|
||||
46,1023,869386
|
||||
13,1039,10258911
|
||||
36,1040,1922517
|
||||
51,1052,664412
|
||||
124,1058,44295
|
||||
84,1079,182039
|
||||
134,1096,36721
|
||||
30,1108,2998016
|
||||
135,1127,35542
|
||||
18,1128,7828246
|
||||
21,1140,6065875
|
||||
42,1148,1223288
|
||||
120,1161,59985
|
||||
139,1163,28985
|
||||
194,1166,365
|
||||
169,1170,6131
|
||||
82,1209,200678
|
||||
26,1226,4252645
|
||||
86,1232,171874
|
||||
167,1261,6589
|
||||
63,1275,394386
|
||||
148,1278,19193
|
||||
66,1293,351864
|
||||
53,1312,641730
|
||||
206,1317,42
|
||||
170,1333,5757
|
||||
28,1336,3120017
|
||||
211,1347,15
|
||||
140,1357,26793
|
||||
93,1368,149732
|
||||
178,1372,3874
|
||||
47,1376,783132
|
||||
121,1399,57170
|
||||
22,1411,5712715
|
||||
156,1416,10013
|
||||
64,1418,364951
|
||||
180,1421,3128
|
||||
114,1423,70186
|
||||
54,1428,610324
|
||||
163,1431,7530
|
||||
115,1432,67981
|
||||
98,1448,132845
|
||||
154,1456,11762
|
||||
103,1466,101232
|
||||
57,1470,507857
|
||||
192,1477,375
|
||||
19,1480,7187879
|
||||
87,1483,171122
|
||||
166,1494,7195
|
||||
210,1498,19
|
||||
14,1523,9704033
|
||||
176,1526,4100
|
||||
59,1528,476359
|
||||
133,1530,36737
|
||||
161,1535,7897
|
||||
109,1551,86090
|
||||
195,1573,326
|
||||
202,1582,55
|
||||
198,1585,281
|
||||
142,1588,25002
|
||||
50,1597,699830
|
||||
130,1599,39978
|
||||
144,1602,23331
|
||||
204,1609,52
|
||||
43,1621,1204990
|
||||
157,1626,9530
|
||||
138,1627,29761
|
||||
75,1636,220320
|
||||
101,1638,107892
|
||||
173,1643,4638
|
||||
45,1648,1091715
|
||||
89,1651,166503
|
||||
70,1652,258353
|
||||
185,1656,2129
|
||||
131,1657,38951
|
||||
158,1669,9237
|
||||
214,1672,1
|
||||
88,1680,167187
|
||||
143,1681,24465
|
||||
187,1683,1682
|
||||
186,1687,1713
|
||||
193,1691,370
|
||||
150,1692,17635
|
||||
116,1700,67818
|
||||
56,1716,523524
|
||||
172,1721,4653
|
||||
79,1724,210586
|
||||
200,1729,106
|
||||
69,1735,261212
|
||||
190,1737,1032
|
||||
164,1745,7416
|
||||
213,1763,9
|
||||
94,1780,142522
|
||||
205,1783,50
|
||||
196,1785,296
|
||||
125,1790,43136
|
||||
106,1793,91636
|
||||
207,1795,40
|
||||
181,1797,2963
|
||||
179,1808,3755
|
2490
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/kill_def.txt
vendored
Normal file
2490
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/kill_def.txt
vendored
Normal file
File diff suppressed because it is too large
Load Diff
259
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/kill_def_tribe.txt
vendored
Normal file
259
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/kill_def_tribe.txt
vendored
Normal file
|
@ -0,0 +1,259 @@
|
|||
3,1,225228925
|
||||
90,4,1123538
|
||||
2,7,263753262
|
||||
66,8,2442607
|
||||
78,12,1791675
|
||||
115,13,586792
|
||||
33,19,7654576
|
||||
73,24,1964044
|
||||
51,29,3593415
|
||||
57,31,3184570
|
||||
31,33,7982804
|
||||
15,35,31145726
|
||||
12,39,40821572
|
||||
4,47,123736361
|
||||
133,53,327110
|
||||
117,56,524360
|
||||
56,59,3238973
|
||||
44,68,5634475
|
||||
34,71,7464048
|
||||
118,72,506287
|
||||
22,77,18308136
|
||||
17,80,27243988
|
||||
18,85,27003725
|
||||
99,89,819602
|
||||
81,92,1704695
|
||||
61,96,2767578
|
||||
116,97,543960
|
||||
65,106,2462841
|
||||
19,112,24098705
|
||||
124,115,432992
|
||||
63,117,2637247
|
||||
1,120,275985429
|
||||
77,125,1826223
|
||||
55,129,3272339
|
||||
98,134,819642
|
||||
74,147,1947811
|
||||
47,157,5019241
|
||||
200,159,35302
|
||||
159,176,141720
|
||||
129,185,370427
|
||||
245,187,1367
|
||||
16,194,29684725
|
||||
210,200,23556
|
||||
142,206,242627
|
||||
54,210,3465830
|
||||
67,211,2411001
|
||||
101,214,791197
|
||||
217,216,17866
|
||||
112,220,600370
|
||||
62,234,2742706
|
||||
172,236,91650
|
||||
201,255,35260
|
||||
60,256,2894965
|
||||
173,260,91124
|
||||
168,281,109440
|
||||
86,285,1307440
|
||||
227,287,7145
|
||||
248,290,539
|
||||
21,291,19215296
|
||||
37,301,6535547
|
||||
154,305,178401
|
||||
30,309,8654616
|
||||
153,317,182517
|
||||
109,319,638904
|
||||
141,336,263066
|
||||
233,339,5461
|
||||
103,355,760905
|
||||
189,365,52241
|
||||
13,369,40063000
|
||||
107,373,670466
|
||||
186,374,54720
|
||||
89,375,1196041
|
||||
45,377,5092537
|
||||
130,382,359347
|
||||
83,385,1615856
|
||||
199,397,36806
|
||||
38,412,6455126
|
||||
145,413,215538
|
||||
222,415,10061
|
||||
151,429,184774
|
||||
24,430,16198878
|
||||
71,432,2040888
|
||||
158,435,162816
|
||||
39,441,6276638
|
||||
175,443,82553
|
||||
150,451,188672
|
||||
32,452,7812313
|
||||
204,474,28931
|
||||
87,475,1224347
|
||||
234,503,5219
|
||||
64,517,2609213
|
||||
137,520,313250
|
||||
125,523,432982
|
||||
48,546,4265938
|
||||
49,548,4231284
|
||||
134,554,322767
|
||||
205,557,28691
|
||||
28,594,11702793
|
||||
162,597,131188
|
||||
92,607,1091090
|
||||
152,624,182954
|
||||
179,625,66255
|
||||
225,626,8121
|
||||
144,633,218591
|
||||
169,636,100862
|
||||
96,647,893889
|
||||
93,651,1039367
|
||||
85,664,1352646
|
||||
11,666,48673656
|
||||
111,686,602468
|
||||
161,689,135903
|
||||
35,693,7123124
|
||||
20,722,22187796
|
||||
237,723,4620
|
||||
132,733,328377
|
||||
105,750,735077
|
||||
95,758,1010984
|
||||
135,766,322406
|
||||
70,778,2157999
|
||||
7,785,82756525
|
||||
75,786,1933759
|
||||
140,806,276830
|
||||
156,809,171639
|
||||
76,822,1928071
|
||||
8,830,71201569
|
||||
188,841,52998
|
||||
69,847,2174797
|
||||
5,862,102003847
|
||||
119,936,477351
|
||||
59,944,2990567
|
||||
207,945,27327
|
||||
174,963,90726
|
||||
209,965,25168
|
||||
82,989,1684724
|
||||
128,991,393721
|
||||
29,1023,11625728
|
||||
9,1039,60773093
|
||||
36,1040,6807047
|
||||
40,1052,6131889
|
||||
100,1058,811470
|
||||
68,1079,2218970
|
||||
104,1096,752682
|
||||
26,1108,13489103
|
||||
192,1127,48333
|
||||
10,1128,54959104
|
||||
123,1140,443639
|
||||
41,1148,5970530
|
||||
121,1161,473253
|
||||
193,1163,47907
|
||||
221,1166,11063
|
||||
216,1170,19000
|
||||
110,1209,635798
|
||||
43,1226,5653666
|
||||
52,1232,3588148
|
||||
178,1247,66890
|
||||
143,1258,223069
|
||||
229,1261,6352
|
||||
235,1275,4979
|
||||
122,1278,462546
|
||||
50,1293,3808642
|
||||
84,1312,1606187
|
||||
195,1317,46103
|
||||
149,1333,191510
|
||||
25,1336,15231713
|
||||
167,1338,113618
|
||||
165,1347,125244
|
||||
147,1357,197411
|
||||
91,1368,1114375
|
||||
181,1372,64564
|
||||
42,1376,5740497
|
||||
190,1389,51599
|
||||
97,1399,860657
|
||||
14,1411,37052780
|
||||
146,1416,204671
|
||||
80,1418,1755743
|
||||
202,1421,32137
|
||||
127,1423,401050
|
||||
223,1428,9859
|
||||
114,1431,587311
|
||||
108,1432,665488
|
||||
219,1448,16361
|
||||
102,1456,769792
|
||||
250,1460,381
|
||||
88,1466,1198208
|
||||
215,1470,20287
|
||||
131,1477,358617
|
||||
23,1480,17353003
|
||||
79,1483,1762582
|
||||
212,1484,22040
|
||||
211,1494,23237
|
||||
163,1498,126061
|
||||
6,1523,92201588
|
||||
184,1526,60390
|
||||
46,1528,5076313
|
||||
94,1530,1014380
|
||||
197,1535,44982
|
||||
242,1538,3192
|
||||
139,1551,283986
|
||||
185,1573,56269
|
||||
239,1582,3932
|
||||
220,1585,13591
|
||||
228,1588,6522
|
||||
208,1590,26580
|
||||
53,1597,3485788
|
||||
164,1599,125295
|
||||
120,1602,475515
|
||||
171,1609,97442
|
||||
191,1610,48607
|
||||
27,1621,12298812
|
||||
240,1626,3909
|
||||
138,1627,302691
|
||||
247,1636,711
|
||||
113,1638,591912
|
||||
251,1643,282
|
||||
206,1645,28423
|
||||
148,1648,194797
|
||||
72,1651,2038539
|
||||
243,1652,2854
|
||||
241,1656,3203
|
||||
155,1657,176879
|
||||
214,1669,21765
|
||||
232,1672,5467
|
||||
170,1680,97513
|
||||
196,1681,45091
|
||||
182,1683,63279
|
||||
166,1687,117365
|
||||
218,1690,16936
|
||||
177,1691,73692
|
||||
255,1692,34
|
||||
126,1700,428112
|
||||
254,1705,62
|
||||
230,1715,6260
|
||||
183,1716,61350
|
||||
224,1721,8254
|
||||
106,1724,708479
|
||||
226,1727,7801
|
||||
238,1729,4434
|
||||
180,1734,64596
|
||||
157,1735,165821
|
||||
160,1737,139080
|
||||
176,1740,81019
|
||||
136,1745,316265
|
||||
198,1750,43707
|
||||
259,1753,2
|
||||
256,1754,10
|
||||
249,1755,395
|
||||
246,1757,1278
|
||||
203,1758,30731
|
||||
194,1763,46590
|
||||
253,1770,124
|
||||
187,1771,54425
|
||||
236,1772,4774
|
||||
257,1777,10
|
||||
252,1779,207
|
||||
58,1780,3113092
|
||||
258,1783,2
|
||||
244,1785,1409
|
||||
231,1793,5563
|
||||
213,1797,21860
|
1421
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/kill_sup.txt
vendored
Normal file
1421
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/kill_sup.txt
vendored
Normal file
File diff suppressed because it is too large
Load Diff
3096
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/player.txt
vendored
Normal file
3096
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/player.txt
vendored
Normal file
File diff suppressed because it is too large
Load Diff
57694
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/village.txt
vendored
Normal file
57694
internal/service/testdata/syncdata/stage2/pl181.plemiona.pl/map/village.txt
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
internal/service/testdata/syncdata/stage2/www.plemiona.pl/backend/get_servers.php
vendored
Normal file
1
internal/service/testdata/syncdata/stage2/www.plemiona.pl/backend/get_servers.php
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
a:1:{s:5:"pl181";s:25:"https://pl181.plemiona.pl";}
|
15
internal/service/testdata/syncennoblements/fixture.yml
vendored
Normal file
15
internal/service/testdata/syncennoblements/fixture.yml
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
- model: Server
|
||||
rows:
|
||||
- _id: us63
|
||||
key: us63
|
||||
url: https://us63.tribalwars.us
|
||||
open: true
|
||||
special: false
|
||||
num_players: 1438
|
||||
num_tribes: 125
|
||||
num_villages: 10048
|
||||
num_player_villages: 5386
|
||||
num_barbarian_villages: 4662
|
||||
num_bonus_villages: 3155
|
||||
created_at: 2023-01-04T22:00:08.748927Z
|
||||
version_code: us
|
1
internal/service/testdata/syncennoblements/stage1/expected/ennoblements.json
vendored
Normal file
1
internal/service/testdata/syncennoblements/stage1/expected/ennoblements.json
vendored
Normal file
File diff suppressed because one or more lines are too long
4933
internal/service/testdata/syncennoblements/stage1/us63.tribalwars.us/map/conquer_extended.txt
vendored
Normal file
4933
internal/service/testdata/syncennoblements/stage1/us63.tribalwars.us/map/conquer_extended.txt
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
internal/service/testdata/syncennoblements/stage2/expected/ennoblements.json
vendored
Normal file
1
internal/service/testdata/syncennoblements/stage2/expected/ennoblements.json
vendored
Normal file
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,5 @@
|
|||
9158,1676958836,848955563,848955598,0,185,778
|
||||
8655,1676959184,282832,0,0,167,111
|
||||
8610,1676959781,750685,0,0,76,103
|
||||
1111,1676959935,848927565,0,0,138,964
|
||||
5288,1676960486,848914361,0,0,20,273
|
205
internal/watermill/watermillamqptest/watermillamqptest.go
Normal file
205
internal/watermill/watermillamqptest/watermillamqptest.go
Normal file
|
@ -0,0 +1,205 @@
|
|||
package watermillamqptest
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"net/url"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermilltest"
|
||||
"github.com/ThreeDotsLabs/watermill"
|
||||
"github.com/ThreeDotsLabs/watermill-amqp/v2/pkg/amqp"
|
||||
"github.com/cenkalti/backoff/v4"
|
||||
"github.com/ory/dockertest/v3"
|
||||
"github.com/ory/dockertest/v3/docker"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
type RabbitMQ struct {
|
||||
connectionString *url.URL
|
||||
resource *dockertest.Resource
|
||||
}
|
||||
|
||||
type rabbitMQConfig struct {
|
||||
repo string
|
||||
tag string
|
||||
ttl uint
|
||||
}
|
||||
|
||||
type RabbitMQOption func(cfg *rabbitMQConfig)
|
||||
|
||||
const rabbitMQDefaultTTL = 60
|
||||
|
||||
func newRabbitMQConfig(opts ...RabbitMQOption) *rabbitMQConfig {
|
||||
cfg := &rabbitMQConfig{
|
||||
repo: "rabbitmq",
|
||||
tag: "3.12.10-alpine",
|
||||
ttl: rabbitMQDefaultTTL,
|
||||
}
|
||||
|
||||
for _, opt := range opts {
|
||||
opt(cfg)
|
||||
}
|
||||
|
||||
return cfg
|
||||
}
|
||||
|
||||
func WithRabbitMQTTL(ttlSeconds uint) RabbitMQOption {
|
||||
return func(cfg *rabbitMQConfig) {
|
||||
cfg.ttl = ttlSeconds
|
||||
}
|
||||
}
|
||||
|
||||
func WithRabbitMQImage(image string) RabbitMQOption {
|
||||
return func(cfg *rabbitMQConfig) {
|
||||
cfg.repo, cfg.tag = docker.ParseRepositoryTag(image)
|
||||
}
|
||||
}
|
||||
|
||||
// NewRabbitMQ constructs a new RabbitMQ resource. If the env variable 'TESTS_RABBITMQ_CONNECTION_STRING' is set,
|
||||
// this function doesn't run a new Docker container and uses the value of this variable as a connection string,
|
||||
// otherwise this function runs a new RabbitMQ instance in a Docker container.
|
||||
// This function is intended for use in TestMain.
|
||||
func NewRabbitMQ(pool *dockertest.Pool, opts ...RabbitMQOption) (*RabbitMQ, error) {
|
||||
cfg := newRabbitMQConfig(opts...)
|
||||
|
||||
if connString := os.Getenv("TESTS_RABBITMQ_CONNECTION_STRING"); connString != "" {
|
||||
u, err := url.ParseRequestURI(connString)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &RabbitMQ{
|
||||
connectionString: u,
|
||||
}, nil
|
||||
}
|
||||
|
||||
u := &url.URL{
|
||||
Scheme: "amqp",
|
||||
User: url.UserPassword("rmq", "rmq"),
|
||||
Path: "/",
|
||||
}
|
||||
|
||||
pw, _ := u.User.Password()
|
||||
|
||||
resource, err := pool.RunWithOptions(&dockertest.RunOptions{
|
||||
Repository: cfg.repo,
|
||||
Tag: cfg.tag,
|
||||
Env: []string{
|
||||
fmt.Sprintf("RABBITMQ_DEFAULT_USER=%s", u.User.Username()),
|
||||
fmt.Sprintf("RABBITMQ_DEFAULT_PASS=%s", pw),
|
||||
},
|
||||
}, func(config *docker.HostConfig) {
|
||||
config.AutoRemove = true
|
||||
config.RestartPolicy = docker.RestartPolicy{
|
||||
Name: "no",
|
||||
}
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("couldn't run rabbitmq: %w", err)
|
||||
}
|
||||
|
||||
if err = resource.Expire(cfg.ttl); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
u.Host, err = getHostPort(resource, "5672/tcp")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &RabbitMQ{
|
||||
connectionString: u,
|
||||
resource: resource,
|
||||
}, nil
|
||||
}
|
||||
|
||||
const (
|
||||
rabbitMQOpenConnBackOffMaxInterval = 5 * time.Second
|
||||
rabbitMQOpenConnBackOffMaxElapsedTime = 30 * time.Second
|
||||
)
|
||||
|
||||
func (rmq *RabbitMQ) NewConnection(tb watermilltest.TestingTB) *amqp.ConnectionWrapper {
|
||||
tb.Helper()
|
||||
|
||||
require.NotNil(tb, rmq, "rabbit mq resource not property initialized")
|
||||
require.NotNil(tb, rmq.connectionString, "rabbit mq resource not properly initialized")
|
||||
|
||||
connConfig := amqp.ConnectionConfig{AmqpURI: rmq.connectionString.String()}
|
||||
|
||||
bo := backoff.NewExponentialBackOff()
|
||||
bo.MaxInterval = rabbitMQOpenConnBackOffMaxInterval
|
||||
bo.MaxElapsedTime = rabbitMQOpenConnBackOffMaxElapsedTime
|
||||
require.NoError(tb, backoff.Retry(func() error {
|
||||
conn, err := amqp.NewConnection(connConfig, watermill.NopLogger{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_ = conn.Close()
|
||||
return nil
|
||||
}, bo))
|
||||
|
||||
conn, err := amqp.NewConnection(connConfig, watermill.NopLogger{})
|
||||
require.NoError(tb, err)
|
||||
tb.Cleanup(func() {
|
||||
_ = conn.Close()
|
||||
})
|
||||
|
||||
return conn
|
||||
}
|
||||
|
||||
func (rmq *RabbitMQ) Close() error {
|
||||
if rmq != nil && rmq.resource != nil {
|
||||
if err := rmq.resource.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type TopicNameGenerator func(topic string) string
|
||||
|
||||
func NewPubSub(
|
||||
tb watermilltest.TestingTB,
|
||||
conn *amqp.ConnectionWrapper,
|
||||
queueNameGenerator amqp.QueueNameGenerator,
|
||||
exchangeAndRoutingKeyNameGenerator TopicNameGenerator,
|
||||
) (*amqp.Publisher, *amqp.Subscriber) {
|
||||
tb.Helper()
|
||||
|
||||
cfg := amqp.NewNonDurablePubSubConfig("", queueNameGenerator)
|
||||
cfg.Consume.NoRequeueOnNack = true
|
||||
cfg.Consume.Qos.PrefetchCount = 1
|
||||
cfg.Exchange.GenerateName = exchangeAndRoutingKeyNameGenerator
|
||||
cfg.QueueBind.GenerateRoutingKey = exchangeAndRoutingKeyNameGenerator
|
||||
|
||||
publisher, err := amqp.NewPublisherWithConnection(cfg, watermill.NopLogger{}, conn)
|
||||
require.NoError(tb, err)
|
||||
tb.Cleanup(func() {
|
||||
_ = publisher.Close()
|
||||
})
|
||||
|
||||
subscriber, err := amqp.NewSubscriberWithConnection(cfg, watermill.NopLogger{}, conn)
|
||||
require.NoError(tb, err)
|
||||
tb.Cleanup(func() {
|
||||
_ = subscriber.Close()
|
||||
})
|
||||
|
||||
return publisher, subscriber
|
||||
}
|
||||
|
||||
func getHostPort(resource *dockertest.Resource, id string) (string, error) {
|
||||
dockerURL := os.Getenv("DOCKER_HOST")
|
||||
if dockerURL == "" {
|
||||
return resource.GetHostPort(id), nil
|
||||
}
|
||||
|
||||
u, err := url.Parse(dockerURL)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return net.JoinHostPort(u.Hostname(), resource.GetPort(id)), nil
|
||||
}
|
|
@ -5,7 +5,7 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermillmsg"
|
||||
"gitea.dwysokinski.me/twhelp/corev3/internal/watermill/watermillmsg"
|
||||
"github.com/ThreeDotsLabs/watermill"
|
||||
"github.com/google/uuid"
|
||||
"github.com/stretchr/testify/assert"
|
9
internal/watermill/watermilltest/testing_tb.go
Normal file
9
internal/watermill/watermilltest/testing_tb.go
Normal file
|
@ -0,0 +1,9 @@
|
|||
package watermilltest
|
||||
|
||||
// TestingTB is a subset of the API provided by both *testing.T and *testing.B.
|
||||
type TestingTB interface {
|
||||
Helper()
|
||||
Errorf(format string, args ...interface{})
|
||||
FailNow()
|
||||
Cleanup(f func())
|
||||
}
|
84
internal/watermill/watermilltest/watermilltest.go
Normal file
84
internal/watermill/watermilltest/watermilltest.go
Normal file
|
@ -0,0 +1,84 @@
|
|||
package watermilltest
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/ThreeDotsLabs/watermill"
|
||||
"github.com/ThreeDotsLabs/watermill/message"
|
||||
"github.com/ThreeDotsLabs/watermill/pubsub/gochannel"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
type Registerer interface {
|
||||
Register(router *message.Router)
|
||||
}
|
||||
|
||||
func RunRouter(tb TestingTB, rs ...Registerer) *message.Router {
|
||||
tb.Helper()
|
||||
return RunRouterWithContext(tb, context.Background(), rs...)
|
||||
}
|
||||
|
||||
const routerCloseTimeout = 10 * time.Second
|
||||
|
||||
//nolint:revive
|
||||
func RunRouterWithContext(tb TestingTB, ctx context.Context, rs ...Registerer) *message.Router {
|
||||
tb.Helper()
|
||||
|
||||
router, err := message.NewRouter(message.RouterConfig{CloseTimeout: routerCloseTimeout}, watermill.NopLogger{})
|
||||
require.NoError(tb, err)
|
||||
tb.Cleanup(func() {
|
||||
_ = router.Close()
|
||||
})
|
||||
|
||||
for _, r := range rs {
|
||||
r.Register(router)
|
||||
}
|
||||
|
||||
go func() {
|
||||
require.NoError(tb, router.Run(ctx))
|
||||
}()
|
||||
<-router.Running()
|
||||
|
||||
return router
|
||||
}
|
||||
|
||||
type MiddlewareRegisterer struct {
|
||||
H message.HandlerMiddleware
|
||||
}
|
||||
|
||||
var _ Registerer = MiddlewareRegisterer{}
|
||||
|
||||
func (m MiddlewareRegisterer) Register(router *message.Router) {
|
||||
router.AddMiddleware(m.H)
|
||||
}
|
||||
|
||||
func NewWaitForHandlerMiddleware(handlerName string) (MiddlewareRegisterer, <-chan struct{}) {
|
||||
ch := make(chan struct{})
|
||||
return MiddlewareRegisterer{
|
||||
H: func(h message.HandlerFunc) message.HandlerFunc {
|
||||
return func(msg *message.Message) ([]*message.Message, error) {
|
||||
if message.HandlerNameFromCtx(msg.Context()) != handlerName {
|
||||
return h(msg)
|
||||
}
|
||||
|
||||
result, err := h(msg)
|
||||
if len(result) == 0 && err == nil {
|
||||
close(ch)
|
||||
}
|
||||
return result, err
|
||||
}
|
||||
},
|
||||
}, ch
|
||||
}
|
||||
|
||||
func NewPubSub(tb TestingTB) *gochannel.GoChannel {
|
||||
tb.Helper()
|
||||
|
||||
pubSub := gochannel.NewGoChannel(gochannel.Config{Persistent: true}, watermill.NopLogger{})
|
||||
tb.Cleanup(func() {
|
||||
_ = pubSub.Close()
|
||||
})
|
||||
|
||||
return pubSub
|
||||
}
|
Loading…
Reference in New Issue
Block a user