code: def testAllgatherv2(self):
      size = self.COMM.Get_size()
      rank = self.COMM.Get_rank()
      for array, typecode in arrayimpl.loop():
          for root in range(size):
              check_a = arrayimpl.scalar(root)
              check_b = arrayimpl.scalar(-1)
              for count in range(size):
                  sbuf = array(root, typecode, size)
                  rbuf = array(-1, typecode, size * size)
                  sendbuf = sbuf.as_mpi_c(count)
                  recvbuf = rbuf.as_mpi_v(count, size)
                  StartWaitFree(
                      self.COMM.Allgatherv_init(sendbuf, recvbuf)
                  )
                  for i in range(size):
                      row = rbuf[i * size : (i + 1) * size]
                      a, b = row[:count], row[count:]
                      for va in a:
                          self.assertEqual(va, check_a)
                      for vb in b:
                          self.assertEqual(vb, check_b)
  
imports: from mpi4py import MPI
  import mpiunittest
  import arrayimpl
label_desc: Use image node_id 8 for calling the BaseTestCCOVec obj's underlying member method code with example usage: obj.testAllgatherv2() without return types