Exemple #1
0
        public IEnumerator UpdateStagesInvocation()
        {
            Guid updateStagesTestId       = NetworkManagerHelper.AddGameNetworkObject("UpdateStagesTest");
            var  rpcPipelineTestComponent = NetworkManagerHelper.AddComponentToObject <NetworkUpdateStagesComponent>(updateStagesTestId);

            NetworkManagerHelper.SpawnNetworkObject(updateStagesTestId);

            var testsAreComplete = rpcPipelineTestComponent.IsTestComplete();
            var exceededMaximumStageIterations = rpcPipelineTestComponent.ExceededMaxIterations();

            // Start testing
            rpcPipelineTestComponent.EnableTesting = true;

            Debug.Log("Running TestNetworkUpdateStages: ");

            // Wait for the RPC pipeline test to complete or if we exceeded the maximum iterations bail
            while (!testsAreComplete && !exceededMaximumStageIterations)
            {
                yield return(new WaitForSeconds(0.003f));

                testsAreComplete = rpcPipelineTestComponent.IsTestComplete();
                Assert.IsFalse(rpcPipelineTestComponent.ExceededMaxIterations());
            }
            var testsAreValidated = rpcPipelineTestComponent.ValidateUpdateStages();

            // Stop testing
            rpcPipelineTestComponent.EnableTesting = false;

            Debug.Log($"Exiting status => {nameof(testsAreComplete)}: {testsAreComplete} - {nameof(testsAreValidated)}: {testsAreValidated} -{nameof(exceededMaximumStageIterations)}: {exceededMaximumStageIterations}");

            Assert.IsTrue(testsAreComplete && testsAreValidated);

            // Disable this so it isn't running any longer.
            rpcPipelineTestComponent.gameObject.SetActive(false);
        }
Exemple #2
0
        public IEnumerator BufferDataValidation()
        {
            Guid gameObjectId = NetworkManagerHelper.AddGameNetworkObject("GrowingBufferObject");

            var growingRpcBufferSizeComponent = NetworkManagerHelper.AddComponentToObject <BufferDataValidationComponent>(gameObjectId);

            NetworkManagerHelper.SpawnNetworkObject(gameObjectId);

            // Start Testing
            growingRpcBufferSizeComponent.EnableTesting = true;

            var testsAreComplete = growingRpcBufferSizeComponent.IsTestComplete();

            // Wait for the RPC pipeline test to complete or if we exceeded the maximum iterations bail
            while (!testsAreComplete)
            {
                yield return(new WaitForSeconds(0.003f));

                testsAreComplete = growingRpcBufferSizeComponent.IsTestComplete();
            }

            // Stop Testing
            growingRpcBufferSizeComponent.EnableTesting = false;

            // Just disable this once we are done.
            growingRpcBufferSizeComponent.gameObject.SetActive(false);

            Assert.IsTrue(testsAreComplete);
        }
Exemple #3
0
        public void NetworkConfigInvalidNetworkPrefabTest()
        {
            var           testPrefabObjectName = "NetworkPrefabHandlerTestObject";
            Guid          baseObjectID         = NetworkManagerHelper.AddGameNetworkObject(testPrefabObjectName);
            NetworkObject baseObject           = NetworkManagerHelper.InstantiatedNetworkObjects[baseObjectID];

            // Add null entry
            NetworkManagerHelper.NetworkManagerObject.NetworkConfig.NetworkPrefabs.Add(null);

            // Add a NetworkPrefab with no prefab
            NetworkManagerHelper.NetworkManagerObject.NetworkConfig.NetworkPrefabs.Add(new Configuration.NetworkPrefab());

            var validNetworkPrefab = new Configuration.NetworkPrefab();

            validNetworkPrefab.Prefab = baseObject.gameObject;

            //Add a valid prefab
            NetworkManagerHelper.NetworkManagerObject.NetworkConfig.NetworkPrefabs.Add(validNetworkPrefab);
            var exceptionOccurred = false;

            try
            {
                NetworkManagerHelper.NetworkManagerObject.StartHost();
            }
            catch
            {
                exceptionOccurred = true;
            }

            Assert.False(exceptionOccurred);
        }
Exemple #4
0
        public IEnumerator TestAllNetworkVariableTypes()
        {
            Guid gameObjectId = NetworkManagerHelper.AddGameNetworkObject("NetworkVariableTestComponent");

            var networkVariableTestComponent = NetworkManagerHelper.AddComponentToObject <NetworkVariableTestComponent>(gameObjectId);

            NetworkManagerHelper.SpawnNetworkObject(gameObjectId);

            // Start Testing
            networkVariableTestComponent.EnableTesting = true;

            var testsAreComplete = networkVariableTestComponent.IsTestComplete();

            // Wait for the NetworkVariable tests to complete
            while (!testsAreComplete)
            {
                yield return(new WaitForSeconds(0.003f));

                testsAreComplete = networkVariableTestComponent.IsTestComplete();
            }

            // Stop Testing
            networkVariableTestComponent.EnableTesting = false;

            Assert.IsTrue(networkVariableTestComponent.DidAllValuesChange());

            // Disable this once we are done.
            networkVariableTestComponent.gameObject.SetActive(false);

            Assert.IsTrue(testsAreComplete);
        }
Exemple #5
0
        private void SendBufferServerRpc(byte[] buffer)
        {
            TestFailed = !NetworkManagerHelper.BuffersMatch(0, buffer.Length, buffer, m_SendBuffer.ToArray());
            if (!TestFailed)
            {
                Debug.Log($"Tested buffer size of {m_SendBuffer.Count} -- OK");
            }

            if (m_CurrentBufferSize == MaximumBufferSize)
            {
                m_CurrentBufferSize++;
            }
            else
            {
                //Increasse buffer size
                m_CurrentBufferSize = m_CurrentBufferSize << 1;
            }

            m_WaitForValidation = false;
        }
Exemple #6
0
 public void Setup()
 {
     // Create, instantiate, and host
     Assert.IsTrue(NetworkManagerHelper.StartNetworkManager(out _));
 }
Exemple #7
0
 public void TearDown()
 {
     // Stop, shutdown, and destroy
     NetworkManagerHelper.ShutdownNetworkManager();
 }
Exemple #8
0
        public void RpcQueueContainerClass()
        {
            // Create a testing rpcQueueContainer that doesn't get added to the network update loop so we don't try to send or process during the test
            var rpcQueueContainer = new RpcQueueContainer(NetworkManagerHelper.NetworkManagerObject, 0, true);

            // Make sure we set testing mode so we don't try to invoke RPCs
            rpcQueueContainer.SetTestingState(true);

            var maxRpcEntries             = 8;
            var messageChunkSize          = 2048;
            var preCalculatedBufferValues = new List <byte>(messageChunkSize);


            for (int i = 0; i < messageChunkSize; i++)
            {
                preCalculatedBufferValues.AddRange(BitConverter.GetBytes(UnityEngine.Random.Range(0, ulong.MaxValue)));
            }

            var   indexOffset     = 0;
            ulong senderNetworkId = 1;

            // Create fictitious list of clients to send to
            ulong[] psuedoClients = new ulong[] { 0 };

            var randomGeneratedDataArray = preCalculatedBufferValues.ToArray();
            var maximumOffsetValue       = preCalculatedBufferValues.Count;

            // Testing outbound side of the RpcQueueContainer
            for (int i = 0; i < maxRpcEntries; i++)
            {
                // Increment our offset into our randomly generated data for next entry;
                indexOffset = (i * messageChunkSize) % maximumOffsetValue;

                var writer = rpcQueueContainer.BeginAddQueueItemToFrame(RpcQueueContainer.QueueItemType.ServerRpc, Time.realtimeSinceStartup, Transports.NetworkChannel.DefaultMessage,
                                                                        senderNetworkId, psuedoClients, RpcQueueHistoryFrame.QueueFrameType.Outbound, NetworkUpdateStage.PostLateUpdate);


                writer.WriteByteArray(randomGeneratedDataArray, messageChunkSize);


                rpcQueueContainer.EndAddQueueItemToFrame(writer, RpcQueueHistoryFrame.QueueFrameType.Outbound, NetworkUpdateStage.PostLateUpdate);
            }

            // Now verify the data by obtaining the RpcQueueHistoryFrame we just wrote to
            var currentFrame = rpcQueueContainer.GetLoopBackHistoryFrame(RpcQueueHistoryFrame.QueueFrameType.Outbound, NetworkUpdateStage.PostLateUpdate);

            // Reset our index offset
            indexOffset = 0;
            int queueEntryItemCount = 0;
            // Parse through the entries written to the current RpcQueueHistoryFrame
            var currentQueueItem = currentFrame.GetFirstQueueItem();

            while (currentQueueItem.QueueItemType != RpcQueueContainer.QueueItemType.None)
            {
                // Check to make sure the wrapper information is accurate for the entry
                Assert.AreEqual(currentQueueItem.NetworkId, senderNetworkId);
                Assert.AreEqual(currentQueueItem.QueueItemType, RpcQueueContainer.QueueItemType.ServerRpc);
                Assert.AreEqual(currentQueueItem.UpdateStage, NetworkUpdateStage.PostLateUpdate);
                Assert.AreEqual(currentQueueItem.NetworkChannel, Transports.NetworkChannel.DefaultMessage);

                // Validate the data in the queue
                Assert.IsTrue(NetworkManagerHelper.BuffersMatch(currentQueueItem.MessageData.Offset, messageChunkSize, currentQueueItem.MessageData.Array, randomGeneratedDataArray));

                // Prepare for next queue item
                queueEntryItemCount++;
                currentQueueItem = currentFrame.GetNextQueueItem();
            }

            rpcQueueContainer.Dispose();
        }
 public void Setup()
 {
     //Create, instantiate, and host
     NetworkManagerHelper.StartNetworkManager(out _);
 }
Exemple #10
0
        public void NetworkPrefabHandlerClass()
        {
            Assert.IsTrue(NetworkManagerHelper.StartNetworkManager(out _));
            var testPrefabObjectName = "NetworkPrefabHandlerTestObject";

            Guid          baseObjectID = NetworkManagerHelper.AddGameNetworkObject(testPrefabObjectName);
            NetworkObject baseObject   = NetworkManagerHelper.InstantiatedNetworkObjects[baseObjectID];

            var networkPrefabHandler        = new NetworkPrefabHandler();
            var networkPrefaInstanceHandler = new NetworkPrefaInstanceHandler(baseObject);

            var prefabPosition = new Vector3(1.0f, 5.0f, 3.0f);
            var prefabRotation = new Quaternion(1.0f, 0.5f, 0.4f, 0.1f);

            //Register via GameObject
            var gameObjectRegistered = networkPrefabHandler.AddHandler(baseObject.gameObject, networkPrefaInstanceHandler);

            //Test result of registering via GameObject reference
            Assert.True(gameObjectRegistered);

            var spawnedObject = networkPrefabHandler.HandleNetworkPrefabSpawn(baseObject.GlobalObjectIdHash, 0, prefabPosition, prefabRotation);

            //Test that something was instantiated
            Assert.NotNull(spawnedObject);

            //Test that this is indeed an instance of our original object
            Assert.True(spawnedObject.name.Contains(testPrefabObjectName));

            //Test for position and rotation
            Assert.True(prefabPosition == spawnedObject.transform.position);
            Assert.True(prefabRotation == spawnedObject.transform.rotation);

            networkPrefabHandler.HandleNetworkPrefabDestroy(spawnedObject);     //Destroy our prefab instance
            networkPrefabHandler.RemoveHandler(baseObject);                     //Remove our handler

            //Register via NetworkObject
            gameObjectRegistered = networkPrefabHandler.AddHandler(baseObject, networkPrefaInstanceHandler);

            //Test result of registering via NetworkObject reference
            Assert.True(gameObjectRegistered);

            //Change it up
            prefabPosition = new Vector3(2.0f, 1.0f, 5.0f);
            prefabRotation = new Quaternion(4.0f, 1.5f, 5.4f, 5.1f);

            spawnedObject = networkPrefabHandler.HandleNetworkPrefabSpawn(baseObject.GlobalObjectIdHash, 0, prefabPosition, prefabRotation);

            //Test that something was instantiated
            Assert.NotNull(spawnedObject);

            //Test that this is indeed an instance of our original object
            Assert.True(spawnedObject.name.Contains(testPrefabObjectName));

            //Test for position and rotation
            Assert.True(prefabPosition == spawnedObject.transform.position);
            Assert.True(prefabRotation == spawnedObject.transform.rotation);

            networkPrefabHandler.HandleNetworkPrefabDestroy(spawnedObject);     //Destroy our prefab instance
            networkPrefabHandler.RemoveHandler(baseObject);                     //Remove our handler

            //Register via GlobalObjectIdHash
            gameObjectRegistered = networkPrefabHandler.AddHandler(baseObject.GlobalObjectIdHash, networkPrefaInstanceHandler);

            //Test result of registering via GlobalObjectIdHash reference
            Assert.True(gameObjectRegistered);

            //Change it up
            prefabPosition = new Vector3(6.0f, 4.0f, 1.0f);
            prefabRotation = new Quaternion(3f, 2f, 4f, 1f);

            spawnedObject = networkPrefabHandler.HandleNetworkPrefabSpawn(baseObject.GlobalObjectIdHash, 0, prefabPosition, prefabRotation);

            //Test that something was instantiated
            Assert.NotNull(spawnedObject);

            //Test that this is indeed an instance of our original object
            Assert.True(spawnedObject.name.Contains(testPrefabObjectName));

            //Test for position and rotation
            Assert.True(prefabPosition == spawnedObject.transform.position);
            Assert.True(prefabRotation == spawnedObject.transform.rotation);

            networkPrefabHandler.HandleNetworkPrefabDestroy(spawnedObject);     //Destroy our prefab instance
            networkPrefabHandler.RemoveHandler(baseObject);                     //Remove our handler

            Assert.False(networkPrefaInstanceHandler.StillHasInstances());
        }
Exemple #11
0
 public void Setup()
 {
     //Create, instantiate, and host
     NetworkManagerHelper.StartNetworkManager(out _, NetworkManagerHelper.NetworkManagerOperatingMode.None);
 }
 public void Setup()
 {
     // Create, instantiate, and host
     Assert.IsTrue(NetworkManagerHelper.StartNetworkManager(out _, NetworkManagerHelper.NetworkManagerOperatingMode.None));
     m_ValidationToken = Guid.NewGuid();
 }