Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions build/includes/sdk.mk
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ SDK_FOLDER ?= go
COMMAND ?= gen
SDK_IMAGE_TAG=$(build_sdk_prefix)$(SDK_FOLDER):$(build_sdk_version)
DEFAULT_CONFORMANCE_TESTS = ready,allocate,setlabel,setannotation,gameserver,health,shutdown,watch,reserve
ALPHA_CONFORMANCE_TESTS = getplayercapacity,setplayercapacity,playerconnect,playerdisconnect,getplayercount,isplayerconnected,getconnectedplayers
# TODO: Move Counter and List tests into DEFAULT_CONFORMANCE_TESTS once the they are written for all SDKs
COUNTS_AND_LISTS_TESTS = getcounter,updatecounter,setcountcounter,setcapacitycounter,getlist,updatelist,addlistvalue,removelistvalue

Expand Down Expand Up @@ -176,39 +175,27 @@ run-sdk-conformance-test-node:
run-sdk-conformance-test-go:
# run with on-by-default (Beta) feature flags enabled
$(MAKE) run-sdk-conformance-test SDK_FOLDER=go GRPC_PORT=9001 HTTP_PORT=9101 TESTS=$(DEFAULT_CONFORMANCE_TESTS),$(COUNTS_AND_LISTS_TESTS)
# run with Alpha and Beta feature flags enabled
$(MAKE) run-sdk-conformance-test SDK_FOLDER=go GRPC_PORT=9001 HTTP_PORT=9101 FEATURE_GATES=$(ALPHA_FEATURE_GATES) TESTS=$(DEFAULT_CONFORMANCE_TESTS),$(ALPHA_CONFORMANCE_TESTS),$(COUNTS_AND_LISTS_TESTS)

run-sdk-conformance-test-rust:
# run without feature flags
$(MAKE) run-sdk-conformance-test SDK_FOLDER=rust GRPC_PORT=9004 HTTP_PORT=9104
# run without feature flags and with RUN_ASYNC=true
DOCKER_RUN_ARGS="$(DOCKER_RUN_ARGS) -e RUN_ASYNC=true" $(MAKE) run-sdk-conformance-test SDK_FOLDER=rust GRPC_PORT=9004 HTTP_PORT=9104
# run with feature flags enabled
$(MAKE) run-sdk-conformance-test SDK_FOLDER=rust GRPC_PORT=9004 HTTP_PORT=9104 FEATURE_GATES=PlayerTracking=true TESTS=$(DEFAULT_CONFORMANCE_TESTS),$(ALPHA_CONFORMANCE_TESTS)
# run with feature flags enabled and with RUN_ASYNC=true
DOCKER_RUN_ARGS="$(DOCKER_RUN_ARGS) -e RUN_ASYNC=true" $(MAKE) run-sdk-conformance-test SDK_FOLDER=rust GRPC_PORT=9004 HTTP_PORT=9104 FEATURE_GATES=PlayerTracking=true TESTS=$(DEFAULT_CONFORMANCE_TESTS),$(ALPHA_CONFORMANCE_TESTS)

run-sdk-conformance-test-csharp:
# run with Beta feature flags enabled
$(MAKE) run-sdk-conformance-test SDK_FOLDER=csharp GRPC_PORT=9005 HTTP_PORT=9105 FEATURE_GATES=$(BETA_FEATURE_GATES) TESTS=$(DEFAULT_CONFORMANCE_TESTS),$(COUNTS_AND_LISTS_TESTS)
# run with Alpha feature flags enabled
$(MAKE) run-sdk-conformance-test SDK_FOLDER=csharp GRPC_PORT=9005 HTTP_PORT=9105 FEATURE_GATES=$(ALPHA_FEATURE_GATES) TESTS=$(DEFAULT_CONFORMANCE_TESTS),$(ALPHA_CONFORMANCE_TESTS)

run-sdk-conformance-test-rest:
# (note: the restapi folder doesn't use GRPC_PORT but run-sdk-conformance-no-build defaults it, so we supply a unique value here)
# run with Beta feature flags enabled
$(MAKE) run-sdk-conformance-test SDK_FOLDER=restapi GRPC_PORT=9050 HTTP_PORT=9150 FEATURE_GATES=$(BETA_FEATURE_GATES) TESTS=$(DEFAULT_CONFORMANCE_TESTS),$(COUNTS_AND_LISTS_TESTS)
# run with Alpha feature flags enabled
$(MAKE) run-sdk-conformance-test SDK_FOLDER=restapi GRPC_PORT=9050 HTTP_PORT=9150 FEATURE_GATES=$(ALPHA_FEATURE_GATES) TESTS=$(DEFAULT_CONFORMANCE_TESTS),$(ALPHA_CONFORMANCE_TESTS)

$(MAKE) run-sdk-command COMMAND=clean SDK_FOLDER=restapi

run-sdk-conformance-test-python:
# run with Beta feature flags enabled
$(MAKE) run-sdk-conformance-test SDK_FOLDER=python GRPC_PORT=9006 HTTP_PORT=9106 FEATURE_GATES=$(BETA_FEATURE_GATES) TESTS=$(DEFAULT_CONFORMANCE_TESTS),$(COUNTS_AND_LISTS_TESTS)
# run with Alpha feature flags enabled
$(MAKE) run-sdk-conformance-test SDK_FOLDER=python GRPC_PORT=9006 HTTP_PORT=9106 FEATURE_GATES=$(ALPHA_FEATURE_GATES) TESTS=$(DEFAULT_CONFORMANCE_TESTS),$(ALPHA_CONFORMANCE_TESTS)

# Run a conformance test for all SDKs supported
run-sdk-conformance-tests: run-sdk-conformance-test-node run-sdk-conformance-test-go run-sdk-conformance-test-rust run-sdk-conformance-test-rest run-sdk-conformance-test-cpp run-sdk-conformance-test-csharp run-sdk-conformance-test-python
Expand Down
4 changes: 0 additions & 4 deletions cmd/sdk-server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,10 +261,6 @@ func runGateway(ctx context.Context, grpcEndpoint string, mux *gwruntime.ServeMu
logger.WithError(err).Fatal("Could not register sdk grpc-gateway")
}

if err := sdkalpha.RegisterSDKHandler(ctx, mux, conn); err != nil {
logger.WithError(err).Fatal("Could not register alpha sdk grpc-gateway")
}

if err := sdkbeta.RegisterSDKHandler(ctx, mux, conn); err != nil {
logger.WithError(err).Fatal("Could not register beta sdk grpc-gateway")
}
Expand Down
9 changes: 1 addition & 8 deletions examples/gameserverallocation-deprecated.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,8 @@ spec:
- {key: tier, operator: In, values: [cache]}
# Specifies which State is the filter to be used when attempting to retrieve a GameServer
# via Allocation. Defaults to "Ready". The only other option is "Allocated", which can be used in conjunction with
# label/annotation/player selectors to retrieve an already Allocated GameServer.
# label/annotation selectors to retrieve an already Allocated GameServer.
gameServerState: Ready
# [Stage:Alpha]
# [FeatureFlag:PlayerAllocationFilter]
# Provides a filter on minimum and maximum values for player capacity when retrieving a GameServer
# through Allocation. Defaults to no limits.
players:
minAvailable: 0
maxAvailable: 99
# Deprecated, use selectors instead.
# ordered list of preferred allocations out of the `required` set.
# If the first selector is not matched, the selection attempts the second selector, and so on.
Expand Down
16 changes: 0 additions & 16 deletions examples/nodejs-simple/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ It will:
- After the shutdown duration (default 60 seconds), shut the server down
- Parse options to get help or set the shutdown timeout duration

If alpha features are enabled it will additionally:
- Set and get the player capacity (this is not enforced)
- Add, get and remove players, and test if they are present

To learn how to deploy this example service to GKE, please see the tutorial [Build and Run a Simple Gameserver (node.js)](https://agones.dev/site/docs/tutorials/simple-gameserver-nodejs/).

## Building
Expand Down Expand Up @@ -81,15 +77,3 @@ $ make args="--timeout=0" run
$ docker run --network=host us-docker.pkg.dev/agones-images/examples/nodejs-simple-server:0.10 --timeout=0
$ npm start -- --timeout=0
```

To enable alpha features ensure the feature gate is enabled:
```bash
$ cd ../../build; make run-sdk-conformance-local TIMEOUT=120 FEATURE_GATES="PlayerTracking=true" TESTS=ready,watch,health,gameserver
```

Then enable the alpha suite:
```
$ make args="--alpha" run
$ docker run --network=host us-docker.pkg.dev/agones-images/examples/nodejs-simple-server:0.10 --alpha
$ npm start -- --alpha
```
75 changes: 2 additions & 73 deletions examples/nodejs-simple/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const {setTimeout} = require('timers/promises');
const DEFAULT_TIMEOUT = 60;
const MAX_TIMEOUT = 2147483;

const connect = async (timeout, enableAlpha, enableBeta) => {
const connect = async (timeout, enableBeta) => {
let agonesSDK = new AgonesSDK();

let lifetimeInterval;
Expand All @@ -44,11 +44,6 @@ const connect = async (timeout, enableAlpha, enableBeta) => {
state: ${result.status.state}
labels: ${result.objectMeta.labelsMap.join(' & ')}
annotations: ${result.objectMeta.annotationsMap.join(' & ')}`;
if (enableAlpha) {
output += `
players: ${result.status.players.count}/${result.status.players.capacity} [${result.status.players.idsList}]`;
}
console.log(output);
}, (error) => {
console.error('Watch ERROR', error);
clearInterval(healthInterval);
Expand Down Expand Up @@ -77,11 +72,6 @@ const connect = async (timeout, enableAlpha, enableBeta) => {
await agonesSDK.reserve(10);
await setTimeout(15000);

if (enableAlpha) {
console.log('Running alpha suite');
await runAlphaSuite(agonesSDK);
}

if (enableBeta) {
console.log('Running beta suite');
await runBetaSuite(agonesSDK);
Expand Down Expand Up @@ -117,61 +107,6 @@ const connect = async (timeout, enableAlpha, enableBeta) => {
}
};

const runAlphaSuite = async (agonesSDK) => {
await setTimeout(5000);
console.log('Setting capacity');
await agonesSDK.alpha.setPlayerCapacity(64);

await setTimeout(5000);
console.log('Getting capacity');
let result = await agonesSDK.alpha.getPlayerCapacity();
console.log(`result: ${result}`);

await setTimeout(5000);
console.log('Connecting a player');
result = await agonesSDK.alpha.playerConnect('firstPlayerID');
console.log(`result: ${result}`);

await setTimeout(5000);
console.log('Connecting a duplicate player');
result = await agonesSDK.alpha.playerConnect('firstPlayerID');
console.log(`result: ${result}`);

await setTimeout(5000);
console.log('Connecting another player');
await agonesSDK.alpha.playerConnect('secondPlayerID');

await setTimeout(5000);
console.log('Getting player count');
result = await agonesSDK.alpha.getPlayerCount();
console.log(`result: ${result}`);

await setTimeout(5000);
console.log('Finding if firstPlayerID connected');
result = await agonesSDK.alpha.isPlayerConnected('firstPlayerID');
console.log(`result: ${result}`);

await setTimeout(5000);
console.log('Getting connected players');
result = await agonesSDK.alpha.getConnectedPlayers();
console.log(`result: ${result}`);

await setTimeout(5000);
console.log('Disconnecting a player');
result = await agonesSDK.alpha.playerDisconnect('firstPlayerID');
console.log(`result: ${result}`);

await setTimeout(5000);
console.log('Disconnecting the same player');
result = await agonesSDK.alpha.playerDisconnect('firstPlayerID');
console.log(`result: ${result}`);

await setTimeout(5000);
console.log('Setting counter capacity');
result = await agonesSDK.alpha.setCounterCapacity('testCounter', 10);
console.log(`result: ${result}`);
};

const runBetaSuite = async (agonesSDK) => {
let result;

Expand Down Expand Up @@ -236,7 +171,6 @@ const runBetaSuite = async (agonesSDK) => {

let args = process.argv.slice(2);
let timeout = DEFAULT_TIMEOUT;
let enableAlpha = false;
let enableBeta = false;

for (let arg of args) {
Expand All @@ -246,7 +180,6 @@ for (let arg of args) {

Options:
--timeout=...\t\tshutdown timeout in seconds. Use 0 to never shut down
--alpha\t\t\tenable alpha features
--beta\t\t\tenable beta features`);
return;
}
Expand All @@ -264,15 +197,11 @@ Options:
}
}

if (argName === '--alpha') {
console.log('Enabling alpha features!');
enableAlpha = true;
}

if (argName === '--beta') {
console.log('Enabling beta features!');
enableBeta = true;
}
}

connect(timeout, enableAlpha, enableBeta);
connect(timeout,enableBeta);
107 changes: 0 additions & 107 deletions examples/simple-game-server/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,6 @@ var responseMap = map[string]responseHandler{
"LABEL": handleLabel,
"CRASH": handleCrash,
"ANNOTATION": handleAnnotation,
"PLAYER_CAPACITY": handlePlayerCapacity,
"PLAYER_CONNECT": handlePlayerConnect,
"PLAYER_DISCONNECT": handlePlayerDisconnect,
"PLAYER_CONNECTED": handlePlayerConnected,
"GET_PLAYERS": handleGetPlayers,
"PLAYER_COUNT": handlePlayerCount,
"GET_COUNTER_COUNT": handleGetCounterCount,
"INCREMENT_COUNTER": handleIncrementCounter,
"DECREMENT_COUNTER": handleDecrementCounter,
Expand Down Expand Up @@ -212,107 +206,6 @@ func handleAnnotation(s *sdk.SDK, parts []string, _ ...context.CancelFunc) (resp
return
}

// handlePlayerCapacity sets the player capacity to the given value
// or returns the current player capacity as a string
func handlePlayerCapacity(s *sdk.SDK, parts []string, _ ...context.CancelFunc) (response string, addACK bool, responseError error) {
response, addACK = defaultReply(parts)
switch len(parts) {
case 1:
log.Print("Getting Player Capacity")
capacity, err := s.Alpha().GetPlayerCapacity()
if err != nil {
log.Fatalf("could not get capacity: %v", err)
}
response = strconv.FormatInt(capacity, 10) + "\n"
addACK = false
case 2:
if cap, err := strconv.Atoi(parts[1]); err != nil {
response = fmt.Sprintf("%s", err)
responseError = err
} else {
log.Printf("Setting Player Capacity to %d", int64(cap))
if err := s.Alpha().SetPlayerCapacity(int64(cap)); err != nil {
log.Fatalf("could not set capacity: %v", err)
}
}
default:
response = "Invalid PLAYER_CAPACITY, should have 0 or 1 arguments"
responseError = fmt.Errorf("Invalid PLAYER_CAPACITY, should have 0 or 1 arguments")
}
return
}

// handlePlayerConnect connects a given player
func handlePlayerConnect(s *sdk.SDK, parts []string, _ ...context.CancelFunc) (response string, addACK bool, responseError error) {
response, addACK = defaultReply(parts)
if len(parts) < 2 {
response = "Invalid PLAYER_CONNECT, should have 1 argument"
responseError = fmt.Errorf("Invalid PLAYER_CONNECT, should have 1 argument")
return
}
log.Printf("Connecting Player: %s", parts[1])
if _, err := s.Alpha().PlayerConnect(parts[1]); err != nil {
log.Fatalf("could not connect player: %v", err)
}
return
}

// handlePlayerDisconnect disconnects a given player
func handlePlayerDisconnect(s *sdk.SDK, parts []string, _ ...context.CancelFunc) (response string, addACK bool, responseError error) {
response, addACK = defaultReply(parts)
if len(parts) < 2 {
response = "Invalid PLAYER_DISCONNECT, should have 1 argument"
responseError = fmt.Errorf("Invalid PLAYER_DISCONNECT, should have 1 argument")
return
}
log.Printf("Disconnecting Player: %s", parts[1])
if _, err := s.Alpha().PlayerDisconnect(parts[1]); err != nil {
log.Fatalf("could not disconnect player: %v", err)
}
return
}

// handlePlayerConnected returns a bool as a string if a player is connected
func handlePlayerConnected(s *sdk.SDK, parts []string, _ ...context.CancelFunc) (response string, addACK bool, responseError error) {
if len(parts) < 2 {
response = "Invalid PLAYER_CONNECTED, should have 1 argument"
responseError = fmt.Errorf("Invalid PLAYER_CONNECTED, should have 1 argument")
return
}
log.Printf("Checking if player %s is connected", parts[1])
connected, err := s.Alpha().IsPlayerConnected(parts[1])
if err != nil {
log.Fatalf("could not retrieve if player is connected: %v", err)
}
response = strconv.FormatBool(connected) + "\n"
addACK = false
return
}

// handleGetPlayers returns a comma delimited list of connected players
func handleGetPlayers(s *sdk.SDK, parts []string, _ ...context.CancelFunc) (response string, addACK bool, responseError error) {
log.Print("Retrieving connected player list")
list, err := s.Alpha().GetConnectedPlayers()
if err != nil {
log.Fatalf("could not retrieve connected players: %s", err)
}
response = strings.Join(list, ",") + "\n"
addACK = false
return
}

// handlePlayerCount returns the count of connected players as a string
func handlePlayerCount(s *sdk.SDK, parts []string, _ ...context.CancelFunc) (response string, addACK bool, responseError error) {
log.Print("Retrieving connected player count")
count, err := s.Alpha().GetPlayerCount()
if err != nil {
log.Fatalf("could not retrieve player count: %s", err)
}
response = strconv.FormatInt(count, 10) + "\n"
addACK = false
return
}

// handleGetCounterCount returns the Count of the given Counter as a string
func handleGetCounterCount(s *sdk.SDK, parts []string, _ ...context.CancelFunc) (response string, addACK bool, responseError error) {
if len(parts) < 2 {
Expand Down
Loading