def METHOD_NAME(test_case, shape, placement, sbp, fn):
    # lazy result
    class GlobalRandnGraph(flow.nn.Graph):
        def __init__(self):
            super().__init__()
        def build(self):
            flow.manual_seed(233)
            x = fn(shape, placement, sbp)
            return x
    model = GlobalRandnGraph()
    lazy_x = model()
    # eager result
    flow.manual_seed(233)
    eager_x = fn(shape, placement, sbp)
    test_case.assertTrue(
        np.array_equal(lazy_x.to_local().numpy(), eager_x.to_local().numpy())
    )
    # different data
    eager_x2 = fn(shape, placement, sbp)
    test_case.assertFalse(
        np.array_equal(eager_x.to_local().numpy(), eager_x2.to_local().numpy())
    )