agones.dev/agones@v1.54.0/sdks/unity/Tests/Runtime/PlayMode/AgonesSdkIntegrationTests.cs (about)

     1  // Copyright 2024 Google LLC
     2  // All Rights Reserved.
     3  //
     4  // Licensed under the Apache License, Version 2.0 (the "License");
     5  // you may not use this file except in compliance with the License.
     6  // You may obtain a copy of the License at
     7  //
     8  //     http://www.apache.org/licenses/LICENSE-2.0
     9  //
    10  // Unless required by applicable law or agreed to in writing, software
    11  // distributed under the License is distributed on an "AS IS" BASIS,
    12  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  // See the License for the specific language governing permissions and
    14  // limitations under the License.
    15  
    16  using System.Collections;
    17  using NUnit.Framework;
    18  using UnityEngine;
    19  using UnityEngine.TestTools;
    20  using Agones;
    21  using System.Threading.Tasks;
    22  using System;
    23  
    24  namespace Tests.Runtime.Agones
    25  {
    26      public class AgonesSdkIntegrationTests
    27      {
    28  
    29          private AgonesSdk sdk;
    30          private AgonesBetaSdk betaSdk;
    31          private AgonesAlphaSdk alphaSdk;
    32  
    33          [UnitySetUp]
    34          public IEnumerator UnitySetUp()
    35          {
    36              GameObject gameObject = new GameObject();
    37              yield return null;
    38  
    39              this.sdk = gameObject.AddComponent<AgonesSdk>();
    40              this.betaSdk = gameObject.AddComponent<AgonesBetaSdk>();
    41              this.alphaSdk = gameObject.AddComponent<AgonesAlphaSdk>();
    42  
    43              Assert.IsNotNull(this.sdk);
    44              Assert.IsNotNull(this.betaSdk);
    45              Assert.IsNotNull(this.alphaSdk);
    46          }
    47  
    48          [UnityTest]
    49          public IEnumerator TestSdk()
    50          {
    51              var task = RunSdkTests();
    52              yield return new WaitUntil(() => task.IsCompleted);
    53  
    54              if (task.Exception != null)
    55              {
    56                  Debug.LogError(task.Exception);
    57                  Assert.Fail();
    58              }
    59          }
    60  
    61          private async Task RunSdkTests()
    62          {
    63              var connected = await this.sdk.Connect();
    64              Assert.IsTrue(connected);
    65  
    66              bool hasReceivedUpdates = false;
    67              this.sdk.WatchGameServer((gs) =>
    68              {
    69                  hasReceivedUpdates = true;
    70                  Assert.NotNull(gs.ObjectMeta);
    71                  Assert.NotNull(gs.Status);
    72                  Assert.NotNull(gs.Spec);
    73              });
    74  
    75              // Run tests
    76              var ready = await this.sdk.Ready();
    77              Assert.IsTrue(ready);
    78  
    79              var setLabel = await this.sdk.SetLabel("label", "test_label");
    80              Assert.IsTrue(setLabel);
    81  
    82              var setAnnotation = await this.sdk.SetAnnotation("annotation", "test_annotation");
    83              Assert.IsTrue(setAnnotation);
    84  
    85              var reserved = await this.sdk.Reserve(TimeSpan.FromSeconds(5));
    86              Assert.IsTrue(reserved);
    87  
    88              await Task.Delay(1000);
    89  
    90              var allocated = await this.sdk.Allocate();
    91              Assert.IsTrue(allocated);
    92  
    93              // Run beta tests
    94              await this.RunBetaSdkTests();
    95  
    96              Assert.IsTrue(hasReceivedUpdates);
    97  
    98              // Shutdown
    99              var shutdown = await this.sdk.Shutdown();
   100              Assert.IsTrue(shutdown);
   101          }
   102  
   103          private async Task RunBetaSdkTests()
   104          {
   105              // LocalSDKServer starting "rooms": {Count: 1, Capacity: 10}
   106              // Counters
   107              string counter = "rooms";
   108  
   109              var countSet = await this.betaSdk.SetCounterCount(counter, 4);
   110              Assert.IsTrue(countSet);
   111  
   112              var counterValue = await this.betaSdk.GetCounterCount(counter);
   113              Assert.AreEqual(4, counterValue);
   114  
   115              var incremented = await this.betaSdk.IncrementCounter(counter, 2);
   116              Assert.IsTrue(incremented);
   117  
   118              var incrementedValue = await this.betaSdk.GetCounterCount(counter);
   119              Assert.AreEqual(6, incrementedValue);
   120  
   121              var decremented = await this.betaSdk.DecrementCounter(counter, 1);
   122              Assert.IsTrue(decremented);
   123  
   124              var decrementedValue = await this.betaSdk.GetCounterCount(counter);
   125              Assert.AreEqual(5, decrementedValue);
   126  
   127              var setCounterCapacity = await this.betaSdk.SetCounterCapacity(counter, 123);
   128              Assert.IsTrue(setCounterCapacity);
   129  
   130              var counterCapacity = await this.betaSdk.GetCounterCapacity(counter);
   131              Assert.AreEqual(123, counterCapacity);
   132  
   133              // LocalSDKServer starting "players": {Values: []string{"test0", "test1", "test2"}, Capacity: 100}}
   134              // Lists
   135              string list = "players";
   136  
   137              var listSet = await this.betaSdk.AppendListValue(list, "test123");
   138              Assert.IsTrue(listSet);
   139  
   140              var listValues = await this.betaSdk.GetListValues(list);
   141              Assert.NotNull(listValues);
   142              Assert.AreEqual(4, listValues.Count);
   143              Assert.AreEqual("test123", listValues[3]);
   144  
   145              var listSize = await this.betaSdk.GetListLength(list);
   146              Assert.AreEqual(4, listSize);
   147  
   148              var setCapacity = await this.betaSdk.SetListCapacity(list, 25);
   149              Assert.IsTrue(setCapacity);
   150  
   151              var capacity = await this.betaSdk.GetListCapacity(list);
   152              Assert.AreEqual(25, capacity);
   153  
   154              var removedValue = await this.betaSdk.DeleteListValue(list, "test123");
   155              Assert.IsTrue(removedValue);
   156  
   157              var removedValue2 = await this.betaSdk.DeleteListValue(list, "test0");
   158              Assert.IsTrue(removedValue2);
   159  
   160              var newSize = await this.betaSdk.GetListLength(list);
   161              Assert.AreEqual(2, newSize);
   162          }
   163      }
   164  }