github.com/apache/beam/sdks/v2@v2.48.2/python/apache_beam/examples/complete/estimate_pi_test.py (about) 1 # 2 # Licensed to the Apache Software Foundation (ASF) under one or more 3 # contributor license agreements. See the NOTICE file distributed with 4 # this work for additional information regarding copyright ownership. 5 # The ASF licenses this file to You under the Apache License, Version 2.0 6 # (the "License"); you may not use this file except in compliance with 7 # the License. You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 # 17 18 """Test for the estimate_pi example.""" 19 20 # pytype: skip-file 21 22 import logging 23 import unittest 24 25 from apache_beam.examples.complete import estimate_pi 26 from apache_beam.testing.test_pipeline import TestPipeline 27 from apache_beam.testing.util import BeamAssertException 28 from apache_beam.testing.util import assert_that 29 30 31 def in_between(lower, upper): 32 def _in_between(actual): 33 _, _, estimate = actual[0] 34 if estimate < lower or estimate > upper: 35 raise BeamAssertException( 36 'Failed assert: %f not in [%f, %f]' % (estimate, lower, upper)) 37 38 return _in_between 39 40 41 class EstimatePiTest(unittest.TestCase): 42 def test_basics(self): 43 with TestPipeline() as p: 44 result = p | 'Estimate' >> estimate_pi.EstimatePiTransform(5000) 45 46 # Note: Probabilistically speaking this test can fail with a probability 47 # that is very small (VERY) given that we run at least 500 thousand 48 # trials. 49 assert_that(result, in_between(3.125, 3.155)) 50 51 52 if __name__ == '__main__': 53 logging.getLogger().setLevel(logging.INFO) 54 unittest.main()