You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by ch...@apache.org on 2017/04/03 17:02:22 UTC

[1/2] beam git commit: [BEAM-1684] Add unit tests for iobase.py.

Repository: beam
Updated Branches:
  refs/heads/master 9beb04ed7 -> af8f586b6


[BEAM-1684] Add unit tests for iobase.py.


Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/beb75954
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/beb75954
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/beb75954

Branch: refs/heads/master
Commit: beb7595475e5b23a485cb46ae768a84c1b26b6df
Parents: 9beb04e
Author: Rahul Sabbineni <du...@users.noreply.github.com>
Authored: Fri Mar 31 23:35:21 2017 -0400
Committer: Chamikara Jayalath <ch...@google.com>
Committed: Mon Apr 3 10:01:07 2017 -0700

----------------------------------------------------------------------
 .../runners/dataflow/native_io/iobase_test.py   | 173 +++++++++++++++++++
 1 file changed, 173 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/beb75954/sdks/python/apache_beam/runners/dataflow/native_io/iobase_test.py
----------------------------------------------------------------------
diff --git a/sdks/python/apache_beam/runners/dataflow/native_io/iobase_test.py b/sdks/python/apache_beam/runners/dataflow/native_io/iobase_test.py
new file mode 100644
index 0000000..1f82fdf
--- /dev/null
+++ b/sdks/python/apache_beam/runners/dataflow/native_io/iobase_test.py
@@ -0,0 +1,173 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+"""Tests corresponding to Dataflow's iobase module."""
+
+
+import unittest
+
+from apache_beam import error, pvalue
+from iobase import (
+    _dict_printable_fields,
+    _NativeWrite,
+    ConcatPosition,
+    DynamicSplitRequest,
+    DynamicSplitResultWithPosition,
+    NativeSink,
+    NativeSource,
+    ReaderPosition,
+    ReaderProgress
+)
+
+
+class TestHelperFunctions(unittest.TestCase):
+
+  def test_dict_printable_fields(self):
+    dict_object = {
+        'key_alpha': '1',
+        'key_beta': None,
+        'key_charlie': [],
+        'key_delta': 2.0,
+        'key_echo': 'skip_me',
+        'key_fox': 0
+    }
+    skip_fields = [
+        'key_echo',
+    ]
+    self.assertEqual(
+        sorted(_dict_printable_fields(dict_object, skip_fields)),
+        [
+            "key_alpha='1'",
+            'key_delta=2.0',
+            'key_fox=0'
+        ]
+    )
+
+
+class TestNativeSource(unittest.TestCase):
+
+  def test_reader_method(self):
+    native_source = NativeSource()
+    self.assertRaises(NotImplementedError, native_source.reader)
+
+  def test_repr_method(self):
+    class FakeSource(NativeSource):
+      """A fake source modeled after BigQuerySource, which inherits from
+      NativeSource."""
+
+      def __init__(self, table=None, dataset=None, project=None, query=None,
+                   validate=False, coder=None, use_std_sql=False,
+                   flatten_results=True):
+        self.validate = validate
+
+    fake_source = FakeSource()
+    self.assertEqual(fake_source.__repr__(), '<FakeSource validate=False>')
+
+
+class TestReaderProgress(unittest.TestCase):
+
+  def test_out_of_bounds_percent_complete(self):
+    with self.assertRaises(ValueError):
+      ReaderProgress(percent_complete=-0.1)
+    with self.assertRaises(ValueError):
+      ReaderProgress(percent_complete=1.1)
+
+  def test_position_property(self):
+    reader_progress = ReaderProgress(position=ReaderPosition())
+    self.assertEqual(type(reader_progress.position), ReaderPosition)
+
+  def test_percent_complete_property(self):
+    reader_progress = ReaderProgress(percent_complete=0.5)
+    self.assertEqual(reader_progress.percent_complete, 0.5)
+
+
+class TestReaderPosition(unittest.TestCase):
+
+  def test_invalid_concat_position_type(self):
+    with self.assertRaises(AssertionError):
+      ReaderPosition(concat_position=1)
+
+  def test_valid_concat_position_type(self):
+    ReaderPosition(concat_position=ConcatPosition(None, None))
+
+
+class TestConcatPosition(unittest.TestCase):
+
+  def test_invalid_position_type(self):
+    with self.assertRaises(AssertionError):
+      ConcatPosition(None, position=1)
+
+  def test_valid_position_type(self):
+    ConcatPosition(None, position=ReaderPosition())
+
+
+class TestDynamicSplitRequest(unittest.TestCase):
+
+  def test_invalid_progress_type(self):
+    with self.assertRaises(AssertionError):
+      DynamicSplitRequest(progress=1)
+
+  def test_valid_progress_type(self):
+    DynamicSplitRequest(progress=ReaderProgress())
+
+
+class TestDynamicSplitResultWithPosition(unittest.TestCase):
+
+  def test_invalid_stop_position_type(self):
+    with self.assertRaises(AssertionError):
+      DynamicSplitResultWithPosition(stop_position=1)
+
+  def test_valid_stop_position_type(self):
+    DynamicSplitResultWithPosition(stop_position=ReaderPosition())
+
+
+class TestNativeSink(unittest.TestCase):
+
+  def test_writer_method(self):
+    native_sink = NativeSink()
+    self.assertRaises(NotImplementedError, native_sink.writer)
+
+  def test_repr_method(self):
+    class FakeSink(NativeSink):
+      """A fake sink modeled after BigQuerySink, which inherits from
+      NativeSink."""
+
+      def __init__(self, validate=False, dataset=None, project=None,
+                   schema=None, create_disposition='create',
+                   write_disposition=None, coder=None):
+        self.validate = validate
+
+    fake_sink = FakeSink()
+    self.assertEqual(fake_sink.__repr__(), "<FakeSink ['validate=False']>")
+
+
+class Test_NativeWrite(unittest.TestCase):
+
+  def setUp(self):
+    self.native_sink = NativeSink()
+    self.native_write = _NativeWrite(self.native_sink)
+
+  def test_expand_method_pcollection_errors(self):
+    with self.assertRaises(error.TransformError):
+      self.native_write.expand(None)
+    with self.assertRaises(error.TransformError):
+      pcoll = pvalue.PCollection(pipeline=None)
+      self.native_write.expand(pcoll)
+
+
+if __name__ == '__main__':
+  unittest.main()


[2/2] beam git commit: This closes #2397

Posted by ch...@apache.org.
This closes #2397


Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/af8f586b
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/af8f586b
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/af8f586b

Branch: refs/heads/master
Commit: af8f586b60853056a20b08d88f7dca72eac657bc
Parents: 9beb04e beb7595
Author: Chamikara Jayalath <ch...@google.com>
Authored: Mon Apr 3 10:01:51 2017 -0700
Committer: Chamikara Jayalath <ch...@google.com>
Committed: Mon Apr 3 10:01:51 2017 -0700

----------------------------------------------------------------------
 .../runners/dataflow/native_io/iobase_test.py   | 173 +++++++++++++++++++
 1 file changed, 173 insertions(+)
----------------------------------------------------------------------