code: def test_sum_prod_execution(setup):
      arr = ones((10, 8), chunk_size=6)
      assert 80 == arr.sum().execute().fetch()
      np.testing.assert_array_equal(
          arr.sum(axis=0).execute().fetch(),
          np.full((8,), fill_value=10),
      )
  
      arr = ones((3, 3), chunk_size=2)
      assert 512 == (arr * 2).prod().execute().fetch()
      np.testing.assert_array_equal(
          (arr * 2).prod(axis=0).execute().fetch(),
          np.full((3,), fill_value=8),
      )
  
      raw = sps.random(10, 20, density=0.1)
      arr = tensor(raw, chunk_size=3)
      res = arr.sum().execute().fetch()
  
      assert pytest.approx(res) == raw.sum()
  
      # test order
      raw = np.asfortranarray(np.random.rand(10, 20, 30))
      arr = tensor(raw, chunk_size=13)
      arr2 = arr.sum(axis=-1)
  
      res = arr2.execute().fetch()
      expected = raw.sum(axis=-1)
      np.testing.assert_allclose(res, expected)
      assert res.flags["C_CONTIGUOUS"] == expected.flags["C_CONTIGUOUS"]
      assert res.flags["F_CONTIGUOUS"] == expected.flags["F_CONTIGUOUS"]
  
      # test string dtype
      a = tensor(list("abcdefghi"), dtype=object)
      assert a.sum().execute().fetch() == "abcdefghi"
      a = tensor(list("abcdefghi"), dtype=object, chunk_size=2)
      assert a.sum().execute().fetch() == "abcdefghi"
  
imports: import numpy
  import scipy.sparse
  import pytest
  from ....utils import ignore_warning
  from ...datasource import ones, tensor
  from ..None import mean, nansum, nanmax, nanmin, nanmean, nanprod, nanargmax, nanargmin, nanvar, nanstd, count_nonzero, allclose, array_equal, var, std, nancumsum, nancumprod
label_desc: Use image node_id 1 for calling a global function with example usage: test_sum_prod_execution(setup) without return types