Пример #1
0
        // GET http://.../JsonProxy/getSchema?uri=dmitrov-uri
        public SerializableDataSetSchema Get(string uri)
        {
            traceSource.TraceEvent(TraceEventType.Information, 1, string.Format("Request for JSON schema of dataset {0}", uri));

            SerializableDataSetSchema result = null;

            if (!String.IsNullOrEmpty(uri))
            {
                var ds = new AzureBlobDataSet(uri);
                result = ConvUtils.GetSerializableSchema(ds);
            }

            if (result == null)
            {
                throw new HttpResponseException(HttpStatusCode.InternalServerError);
            }

            return(result);
        }
Пример #2
0
        public void ByteAndSByteDataTest()
        {
            const int xsize     = 627;
            string    blobUri   = @"msds:ab?UseDevelopmentStorage=true&Container=testcontainer767x9&Blob=testblob767x17";
            var       xaxis     = new SerializableVariableSchema("x", typeof(Int32), new string[] { "x" }, null);
            var       ByteData  = new SerializableVariableSchema("ByteData", typeof(Byte), new string[] { "x" }, null);
            var       SByteData = new SerializableVariableSchema("SByteData", typeof(SByte), new string[] { "x" }, null);
            var       xdim      = new SerializableDimension("x", xsize);
            var       scheme    = new SerializableDataSetSchema(new SerializableDimension[] { xdim }, new SerializableVariableSchema[] { xaxis, ByteData, SByteData },
                                                                new System.Collections.Generic.Dictionary <string, object>());

            AzureBlobDataSet.CreateEmptySet(blobUri, scheme);
            var x      = new int[xsize];
            var Bvals  = new Byte[xsize];
            var SBvals = new SByte[xsize];

            for (int i = 0; i < xsize; ++i)
            {
                x[i] = i;
            }
            for (int i = 0; i < xsize; ++i)
            {
                Bvals[i]  = (Byte)(i % 256);
                SBvals[i] = (SByte)(i % 256 - 128);
            }
            AzureBlobDataSet set = new AzureBlobDataSet(blobUri);

            set["x"].PutData(x);
            set["ByteData"].PutData(Bvals);
            set["SByteData"].PutData(SBvals);

            var receivedByteData  = (Byte[])set["ByteData"].GetData();
            var receivedSByteData = (SByte[])set["SByteData"].GetData();

            for (int i = 0; i < xsize; ++i)
            {
                Assert.AreEqual((Byte)(i % 256), receivedByteData[i]);
                Assert.AreEqual((SByte)(i % 256 - 128), receivedSByteData[i]);
            }
        }
Пример #3
0
        static void Main(string[] args)
        {
            var schema = new SerializableDataSetSchema(
                new SerializableDimension[] {
                new SerializableDimension("i", 30000),
                new SerializableDimension("j", 30000)
            },
                new SerializableVariableSchema[] {
                new SerializableVariableSchema("vals", typeof(double), new string[] { "i", "j" }, null)
            },
                null
                );
            string BlobConnectionAccountName = @"fetchclimate2";
            string BlobConnectionAccountKey  = @"vQpyUA7h5QFX6VlEH944gyv/h2Kx//WDy32brNip+YKDpsrN5/pxcSOnP2igQQ5pkA8lRXkmqmAYrgB29nwo/w==";
            string uri = @"msds:ab?DefaultEndpointsProtocol=http&Container=testcontainer&Blob=testBlob30000x30000&AccountName=" + BlobConnectionAccountName + @"&AccountKey=" + BlobConnectionAccountKey;

            try
            {
                var ds = AzureBlobDataSet.CreateEmptySet(uri, schema);
                double[,] data = new double[1, 30000];
                for (int i = 0; i < 30000; ++i)
                {
                    data[0, i] = (double)i;
                }
                ds["vals"].PutData(new int[] { 29999, 0 }, data);
                var recvData = (double[, ])ds["vals"].GetData(new int[] { 29999, 0 }, new int[] { 1, 30000 });
                for (int i = 0; i < 30000; ++i)
                {
                    if (data[0, i] != recvData[0, i])
                    {
                        throw new Exception("difference at " + i.ToString());
                    }
                }
                Console.WriteLine("Everything is successful!");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.ReadLine();

            //delete test blob
            try
            {
                AzureBlobDataSetUri azureUri = null;
                if (DataSetUri.IsDataSetUri(uri))
                {
                    azureUri = new AzureBlobDataSetUri(uri);
                }
                else
                {
                    azureUri = AzureBlobDataSetUri.ToUri(uri);
                }

                CloudStorageAccount storageAccount = CloudStorageAccount.Parse(azureUri.ConnectionString);

                CloudBlobClient    blobClient = storageAccount.CreateCloudBlobClient();
                CloudBlobContainer container  = blobClient.GetContainerReference(azureUri.Container);
                CloudPageBlob      blob       = container.GetPageBlobReference(azureUri.Blob);
                blob.DeleteIfExists();
                Console.WriteLine("Deleted test blob successfully!");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.ReadLine();
        }
Пример #4
0
        public void ByteAndSByte3DDataTest()
        {
            const int xsize     = 157;
            const int ysize     = 231;
            const int zsize     = 73;
            string    blobUri   = @"msds:ab?UseDevelopmentStorage=true&Container=testcontainer767x9&Blob=testblob767x10";
            var       xaxis     = new SerializableVariableSchema("x", typeof(Int32), new string[] { "x" }, null);
            var       yaxis     = new SerializableVariableSchema("y", typeof(Int32), new string[] { "y" }, null);
            var       zaxis     = new SerializableVariableSchema("z", typeof(Int32), new string[] { "z" }, null);
            var       ByteData  = new SerializableVariableSchema("ByteData", typeof(Byte), new string[] { "x", "y", "z" }, null);
            var       SByteData = new SerializableVariableSchema("SByteData", typeof(SByte), new string[] { "x", "y", "z" }, null);
            var       xdim      = new SerializableDimension("x", xsize);
            var       ydim      = new SerializableDimension("y", ysize);
            var       zdim      = new SerializableDimension("z", zsize);
            var       scheme    = new SerializableDataSetSchema(new SerializableDimension[] { xdim, ydim, zdim }, new SerializableVariableSchema[] { xaxis, yaxis, zaxis, ByteData, SByteData },
                                                                new System.Collections.Generic.Dictionary <string, object>());

            AzureBlobDataSet.CreateEmptySet(blobUri, scheme);
            var x      = new int[xsize];
            var y      = new int[ysize];
            var z      = new int[zsize];
            var Bvals  = new Byte[xsize, ysize, zsize];
            var SBvals = new SByte[xsize, ysize, zsize];

            for (int i = 0; i < xsize; ++i)
            {
                x[i] = i;
            }
            for (int i = 0; i < ysize; ++i)
            {
                y[i] = i;
            }
            for (int i = 0; i < zsize; ++i)
            {
                z[i] = i;
            }
            for (int i = 0; i < xsize; ++i)
            {
                for (int j = 0; j < ysize; ++j)
                {
                    for (int k = 0; k < zsize; ++k)
                    {
                        Bvals[i, j, k]  = (Byte)((i + j + k) % 256);
                        SBvals[i, j, k] = (SByte)((i + j + k) % 256 - 128);
                    }
                }
            }
            AzureBlobDataSet set = new AzureBlobDataSet(blobUri);

            set["x"].PutData(x);
            set["y"].PutData(y);
            set["z"].PutData(z);
            set["ByteData"].PutData(Bvals);
            set["SByteData"].PutData(SBvals);

            var receivedByteData  = (Byte[, , ])set["ByteData"].GetData();
            var receivedSByteData = (SByte[, , ])set["SByteData"].GetData();

            for (int i = 0; i < xsize; ++i)
            {
                for (int j = 0; j < ysize; ++j)
                {
                    for (int k = 0; k < zsize; ++k)
                    {
                        Assert.AreEqual((Byte)((i + j + k) % 256), receivedByteData[i, j, k]);
                        Assert.AreEqual((SByte)((i + j + k) % 256 - 128), receivedSByteData[i, j, k]);
                    }
                }
            }
        }
Пример #5
0
        public void AzureBlobDataSetTest2()
        {
            const int xsize   = 157;
            const int ysize   = 231;
            const int zsize   = 73;
            string    blobUri = @"msds:ab?UseDevelopmentStorage=true&Container=testcontainer767x9&Blob=testblob767x10";
            var       xaxis   = new SerializableVariableSchema("x", typeof(Int32), new string[] { "x" }, null);
            var       yaxis   = new SerializableVariableSchema("y", typeof(Int32), new string[] { "y" }, null);
            var       zaxis   = new SerializableVariableSchema("z", typeof(Int32), new string[] { "z" }, null);
            var       data    = new SerializableVariableSchema("data", typeof(Int32), new string[] { "x", "y", "z" }, null);
            var       xdim    = new SerializableDimension("x", xsize);
            var       ydim    = new SerializableDimension("y", ysize);
            var       zdim    = new SerializableDimension("z", zsize);
            var       scheme  = new SerializableDataSetSchema(new SerializableDimension[] { xdim, ydim, zdim }, new SerializableVariableSchema[] { xaxis, yaxis, zaxis, data },
                                                              new System.Collections.Generic.Dictionary <string, object>());

            scheme.Metadata.Add("metaTest", new ObjectWithTypeString(new string[] { "test1", "test2", "test3" }));
            AzureBlobDataSet.CreateEmptySet(blobUri, scheme);
            var x    = new int[xsize];
            var y    = new int[ysize];
            var z    = new int[zsize];
            var vals = new int[xsize, ysize, zsize];

            for (int i = 0; i < xsize; ++i)
            {
                x[i] = i;
            }
            for (int i = 0; i < ysize; ++i)
            {
                y[i] = i;
            }
            for (int i = 0; i < zsize; ++i)
            {
                z[i] = i;
            }
            for (int i = 0; i < xsize; ++i)
            {
                for (int j = 0; j < ysize; ++j)
                {
                    for (int k = 0; k < zsize; ++k)
                    {
                        vals[i, j, k] = i * j * k;
                    }
                }
            }
            AzureBlobDataSet set = new AzureBlobDataSet(blobUri);

            set["x"].PutData(x);
            set["y"].PutData(y);
            set["z"].PutData(z);
            set["data"].PutData(vals);

            var receivedData = (int[, , ])set["data"].GetData();

            for (int i = 0; i < xsize; ++i)
            {
                for (int j = 0; j < ysize; ++j)
                {
                    for (int k = 0; k < zsize; ++k)
                    {
                        Assert.AreEqual(i * j * k, receivedData[i, j, k]);
                    }
                }
            }

            var meta = (string[])set.Metadata["metaTest"];

            Assert.AreEqual("test1", meta[0]);
            Assert.AreEqual("test2", meta[1]);
            Assert.AreEqual("test3", meta[2]);
        }