コード例 #1
0
ファイル: RowTests.cs プロジェクト: bridgewell/spark
        public void DeepRowConstructorTest()
        {
            Pickler pickler   = CreatePickler();
            var     rowschema = new StructType(
                new StructField[] {
                new StructField("id", new StringType()),
            });
            var schema = new StructType(new StructField[] {
                new StructField("age", new IntegerType()),
                new StructField("name", new StringType()),
                new StructField("dataarray", new ArrayType(rowschema)),
            });

            var row1 = new Row(new object[] { 10, "name1", new ArrayList(new Row[] {
                    new Row(new object[] { "id1" }, rowschema),
                    new Row(new object[] { "id2" }, rowschema),
                }) }, schema);
            var row2 = new Row(new object[] { 15, "name2", new ArrayList(new Row[] {
                    new Row(new object[] { "id1" }, rowschema),
                    new Row(new object[] { "id2" }, rowschema),
                    new Row(new object[] { "id3" }, rowschema),
                }) }, schema);

            byte[] pickledBytes = pickler.dumps(new[] { row1, row2 });

            // Set up the mock to return memory stream to which pickled data is written.
            var stream = new MemoryStream();

            SerDe.Write(stream, pickledBytes.Length);
            SerDe.Write(stream, pickledBytes);
            stream.Position = 0;
            var socket = new Mock <ISocketWrapper>();

            socket.Setup(m => m.InputStream).Returns(stream);
            socket.Setup(m => m.OutputStream).Returns(stream);

            var rowCollector = new RowCollector();

            Row[] rows = rowCollector.Collect(socket.Object, true).ToArray();

            Assert.Equal(2, rows.Length);
            Assert.Equal(
                JsonConvert.SerializeObject(row1),
                JsonConvert.SerializeObject(rows[0]));
            Assert.Equal(
                JsonConvert.SerializeObject(row2),
                JsonConvert.SerializeObject(rows[1]));
        }
コード例 #2
0
ファイル: RowTests.cs プロジェクト: wynot12/spark-1
        public void RowCollectorTest()
        {
            var     stream  = new MemoryStream();
            Pickler pickler = CreatePickler();

            var schema = (StructType)DataType.ParseDataType(_testJsonSchema);

            // Pickle two rows in one batch.
            var row1   = new Row(new object[] { 10, "name1" }, schema);
            var row2   = new Row(new object[] { 15, "name2" }, schema);
            var batch1 = pickler.dumps(new[] { row1, row2 });

            SerDe.Write(stream, batch1.Length);
            SerDe.Write(stream, batch1);

            // Pickle one row in one batch.
            var row3   = new Row(new object[] { 20, "name3" }, schema);
            var batch2 = pickler.dumps(new[] { row3 });

            SerDe.Write(stream, batch2.Length);
            SerDe.Write(stream, batch2);

            // Rewind the memory stream so that the row collect can read from beginning.
            stream.Seek(0, SeekOrigin.Begin);

            // Set up the mock to return memory stream to which pickled data is written.
            var socket = new Mock <ISocketWrapper>();

            socket.Setup(m => m.InputStream).Returns(stream);
            socket.Setup(m => m.OutputStream).Returns(stream);

            var rowCollector = new RowCollector();

            Row[] rows = rowCollector.Collect(socket.Object).ToArray();

            Assert.Equal(3, rows.Length);
            Assert.Equal(row1, rows[0]);
            Assert.Equal(row2, rows[1]);
            Assert.Equal(row3, rows[2]);
        }