示例#1
0
        private void TestPutNewComplete2MB()
        {
            var data = new byte[2097152];

            RandomUtil.Rnd.NextBytes(data);

            var asset = new Asset(
                Guid.NewGuid().ToString("N"),
                7,                 // Notecard
                false,
                false,
                (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds,
                "2MB Asset",
                "Test of a larger asset",
                data
                );

            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.PUT, asset.Uuid, asset.Serialize().data);

            request.Send(_socket);
            // Wait until response comes back.
            while (_socket.Available <= 0)
            {
                if (_cancelTest)
                {
                    return;
                }
            }
#pragma warning disable RECS0026 // Possible unassigned object created by 'new'
            new ServerResponseMsg(_socket);
#pragma warning restore RECS0026 // Possible unassigned object created by 'new'
        }
示例#2
0
        public static void TestOperationPUTWithValidIdReturnsOk()
        {
            var asset = new Asset(
                Guid.NewGuid().ToString("N"),
                7,                 // Notecard
                false,
                false,
                (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds,
                "Just junk",
                "Just junk.",
                new byte[] { 0x31, 0x33, 0x33, 0x37 }
                );

            var data = asset.Serialize().data;

            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.PUT, asset.Uuid, data);

            request.Send(_socket);

            while (_socket.Available <= 0)
            {
            }

            var response = new ServerResponseMsg(_socket);

            Assert.AreEqual(ServerResponseMsg.Result.OK, response.Status, $"Wrong result returned for asset {asset.Uuid}.");
        }
示例#3
0
        public static void TestOperationGETWithValidIdReturnsCorrectAsset()
        {
            var asset = CreateAndPutAsset(_socket);

            Assert.NotNull(asset, "Failure storing asset for test.");

            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.GET, asset.Uuid);

            request.Send(_socket);

            while (_socket.Available <= 0)
            {
            }

            var response       = new ServerResponseMsg(_socket);
            var resultingAsset = new Asset(response.Data);

            Assert.AreEqual(asset.Uuid, resultingAsset.Uuid, "Asset ID fails to match.");
            Assert.AreEqual(asset.Type, resultingAsset.Type, "Asset Type fails to match.");
            Assert.AreEqual(asset.Local, resultingAsset.Local, "Asset Local flag fails to match.");
            Assert.AreEqual(asset.Temporary, resultingAsset.Temporary, "Asset Temporary flag fails to match.");
            Assert.AreEqual(asset.CreateTime, resultingAsset.CreateTime, "Asset CreateTime fails to match.");
            Assert.AreEqual(asset.Name, resultingAsset.Name, "Asset Name fails to match.");
            Assert.AreEqual(asset.Description, resultingAsset.Description, "Asset Description fails to match.");
            Assert.AreEqual(asset.Data, resultingAsset.Data, "Asset Data fails to match.");
        }
示例#4
0
        private void TestPutNewComplete()
        {
            var asset = new Asset(
                Guid.NewGuid().ToString("N"),
                7,                 // Notecard
                false,
                false,
                (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds,
                "New Asset",
                "Test of a new asset",
                System.Text.Encoding.UTF8.GetBytes("Just some data.")
                );

            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.PUT, asset.Uuid, asset.Serialize().data);

            request.Send(_socket);
            // Wait until response comes back.
            while (_socket.Available <= 0)
            {
                if (_cancelTest)
                {
                    return;
                }
            }
#pragma warning disable RECS0026 // Possible unassigned object created by 'new'
            new ServerResponseMsg(_socket);
#pragma warning restore RECS0026 // Possible unassigned object created by 'new'
        }
示例#5
0
        public static void TestOperationPURGEWithValidIdRemovedItem()
        {
            var asset = CreateAndPutAsset(_socket);

            Assert.NotNull(asset, "Failure putting asset while prepping for test.");

            var purgeRequest = new ClientRequestMsg(ClientRequestMsg.RequestType.PURGE, asset.Uuid);

            purgeRequest.Send(_socket);

            while (_socket.Available <= 0)
            {
            }

            var purgeResponse = new ServerResponseMsg(_socket);

            Assert.AreEqual(ServerResponseMsg.Result.OK, purgeResponse.Status, $"Wrong result returned for asset {asset.Uuid}.");

            var getRequest = new ClientRequestMsg(ClientRequestMsg.RequestType.GET, asset.Uuid);

            getRequest.Send(_socket);

            Thread.Sleep(10);
            Assert.NotZero(_socket.Available, "Got nothing from the server!");

            var response = new ServerResponseMsg(_socket);

            Assert.AreEqual(ServerResponseMsg.Result.NOT_FOUND, response.Status, $"Wrong result returned for asset {asset.Uuid}.");
        }
示例#6
0
        public static Asset CreateAndPutAsset(Socket conn, byte[] assetData = null)
        {
            Contract.Requires(conn != null);

            var asset = new Asset(
                Guid.NewGuid().ToString("N"),
                7,                 // Notecard
                false,
                false,
                (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds,
                "Just junk",
                "Just junk.",
                assetData ?? new byte[] { 0x31, 0x33, 0x33, 0x37 }
                );

            var data = asset.Serialize().data;

            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.PUT, asset.Uuid, data);

            request.Send(conn);

            while (conn.Available <= 0)
            {
            }

            var response = new ServerResponseMsg(conn);

            return(response.Status == ServerResponseMsg.Result.OK ? asset : null);
        }
示例#7
0
        public static void TestOperationMAINT_PURGELOCALSReturnsOk()
        {
            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.MAINT_PURGELOCALS, Guid.Empty.ToString("N"));

            request.Send(_socket);

            while (_socket.Available <= 0)
            {
            }

            var response = new ServerResponseMsg(_socket);

            Assert.AreEqual(ServerResponseMsg.Result.OK, response.Status, $"Wrong result returned for purge locals.");
        }
示例#8
0
        public static void TestOperationSTATUS_GETReturnsOk()
        {
            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.STATUS_GET, Guid.Empty.ToString("N"));

            request.Send(_socket);

            while (_socket.Available <= 0)
            {
            }

            var response = new ServerResponseMsg(_socket);

            Assert.AreEqual(ServerResponseMsg.Result.OK, response.Status, $"Wrong result returned.");
        }
示例#9
0
        public static void TestOperationGETWithInvalidIdReturnsError()
        {
            var assetId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";

            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.GET, assetId);

            request.Send(_socket);

            while (_socket.Available <= 0)
            {
            }

            var response = new ServerResponseMsg(_socket);

            Assert.AreEqual(ServerResponseMsg.Result.ERROR, response.Status, $"Wrong result returned for asset {assetId}.");
        }
示例#10
0
        public static void TestOperationGETWithRandomIdReturnsNotFound()
        {
            var assetId = Guid.NewGuid().ToString("N");

            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.GET, assetId);

            request.Send(_socket);

            while (_socket.Available <= 0)
            {
            }

            var response = new ServerResponseMsg(_socket);

            Assert.AreEqual(ServerResponseMsg.Result.NOT_FOUND, response.Status, $"Wrong result returned for asset {assetId}.");
        }
示例#11
0
        public static void TestOperationSTATUS_GETHasExpectedValue()
        {
            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.STATUS_GET, Guid.Empty.ToString("N"));

            request.Send(_socket);

            while (_socket.Available <= 0)
            {
            }

            var response = new ServerResponseMsg(_socket);

            var statusInfo = response.ErrorMessage;

            Assert.That(statusInfo.StartsWith("WHIP Server Status", StringComparison.InvariantCulture), $"Expected to find 'WHIP Server Status' in the following:\n{statusInfo}");
        }
示例#12
0
        private void TestTestKnown()
        {
            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.TEST, _knownAsset.Uuid);

            request.Send(_socket);
            // Wait until response comes back.
            while (_socket.Available <= 0)
            {
                if (_cancelTest)
                {
                    return;
                }
            }
#pragma warning disable RECS0026 // Possible unassigned object created by 'new'
            new ServerResponseMsg(_socket);
#pragma warning restore RECS0026 // Possible unassigned object created by 'new'
        }
示例#13
0
        private void TestGetDontCacheUnknown()
        {
            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.GET_DONTCACHE, Guid.NewGuid().ToString("N"));

            request.Send(_socket);
            // Wait until response comes back.
            while (_socket.Available <= 0)
            {
                if (_cancelTest)
                {
                    return;
                }
            }
#pragma warning disable RECS0026 // Possible unassigned object created by 'new'
            new ServerResponseMsg(_socket);
#pragma warning restore RECS0026 // Possible unassigned object created by 'new'
        }
示例#14
0
        private void TestStoredAssetIdsGet000()
        {
            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.STORED_ASSET_IDS_GET, Guid.Empty.ToString("N"));

            request.Send(_socket);
            // Wait until response comes back.
            while (_socket.Available <= 0)
            {
                if (_cancelTest)
                {
                    return;
                }
            }
#pragma warning disable RECS0026 // Possible unassigned object created by 'new'
            new ServerResponseMsg(_socket);
#pragma warning restore RECS0026 // Possible unassigned object created by 'new'
        }
示例#15
0
        public static void TestOperationTESTWithValidIdReturnsFound()
        {
            var asset = CreateAndPutAsset(_socket);

            Assert.NotNull(asset, "Failure putting asset while prepping for test.");

            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.TEST, asset.Uuid);

            request.Send(_socket);

            while (_socket.Available <= 0)
            {
            }

            var response = new ServerResponseMsg(_socket);

            Assert.AreEqual(ServerResponseMsg.Result.FOUND, response.Status, $"Wrong result returned for asset {asset.Uuid}.");
        }
示例#16
0
        public static void TestServiceMultipleGoodRequests()
        {
            using (var socket = AuthTests.Connect()) {
                for (var index = 0; index < 10; ++index)
                {
                    var request = new ClientRequestMsg(ClientRequestMsg.RequestType.STATUS_GET, Guid.Empty.ToString());
                    request.Send(socket);

                    while (socket.Available <= 0)
                    {
                    }

#pragma warning disable RECS0026 // Possible unassigned object created by 'new'
                    new ServerResponseMsg(socket);
#pragma warning restore RECS0026 // Possible unassigned object created by 'new'
                    // Don't care what the reponse was.
                }
            }
        }
示例#17
0
        public static void TestOperationPUTWithDuplicateIdReturnsError()
        {
            var asset = CreateAndPutAsset(_socket);

            Assert.NotNull(asset, "Failure putting asset while prepping for test.");

            var data = asset.Serialize().data;

            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.PUT, asset.Uuid, data);

            request.Send(_socket);

            while (_socket.Available <= 0)
            {
            }

            var response = new ServerResponseMsg(_socket);

            Assert.AreEqual(ServerResponseMsg.Result.ERROR, response.Status, $"Wrong result returned for asset {asset.Uuid}.");
        }
示例#18
0
        public static void TestOperationSTORED_ASSET_IDS_GETReturnsOk()
        {
            var asset = CreateAndPutAsset(_socket);

            Assert.NotNull(asset, "Failure putting asset while prepping for test.");

            var assetRangeId = asset.Uuid.Substring(0, 3) + Guid.Empty.ToString("N").Substring(3);

            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.STORED_ASSET_IDS_GET, assetRangeId);

            request.Send(_socket);

            while (_socket.Available <= 0)
            {
            }

            var response = new ServerResponseMsg(_socket);

            Assert.AreEqual(ServerResponseMsg.Result.OK, response.Status, $"Wrong result returned for asset range matching {assetRangeId.Substring(0, 3)}*.");
        }
示例#19
0
        public static void TestOperationGETWithValidIdReturnsFound()
        {
            var asset = CreateAndPutAsset(_socket);

            Assert.NotNull(asset, "Failure storing asset for test.");

            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.GET, asset.Uuid);

            request.Send(_socket);

            while (_socket.Available <= 0)
            {
            }

            Thread.Sleep(10);
            Assert.NotZero(_socket.Available, "Got nothing from the server!");

            var response = new ServerResponseMsg(_socket);

            Assert.AreEqual(ServerResponseMsg.Result.FOUND, response.Status, $"Wrong result returned for asset {asset.Uuid}.");
        }
示例#20
0
        public static void TestOperationSTORED_ASSET_IDS_GETHasExpectedEntry()
        {
            var asset = CreateAndPutAsset(_socket);

            Assert.NotNull(asset, "Failure putting asset while prepping for test.");

            var assetRangeId = asset.Uuid.Substring(0, 3) + Guid.Empty.ToString("N").Substring(3);

            var request = new ClientRequestMsg(ClientRequestMsg.RequestType.STORED_ASSET_IDS_GET, assetRangeId);

            request.Send(_socket);

            while (_socket.Available <= 0)
            {
            }

            var response = new ServerResponseMsg(_socket);

            var assetIdCSV = response.ErrorMessage;

            Assert.That(assetIdCSV.Contains(asset.Uuid), $"Expected to find '{asset.Uuid}' in the following:\n{assetIdCSV}");
        }