(producer, ranks, allGather = False)
| 43 | return True |
| 44 | |
| 45 | def TestFetchDataRanks(producer, ranks, allGather = False): |
| 46 | print_info("TestFetchDataRanks %s" % repr(ranks)) |
| 47 | dataMap = FetchData(producer, SourceRanks=ranks, GatherOnAllRanks = allGather) |
| 48 | |
| 49 | if not allGather and GetIsSymmetric() and GetRank() > 0: |
| 50 | # dataMap must be empty. |
| 51 | if dataMap: |
| 52 | print_error("FetchData should not deliver any data on satellites!") |
| 53 | return False |
| 54 | else: |
| 55 | dataRanks = [x for x in dataMap.keys()] |
| 56 | expectedRanks = [] |
| 57 | |
| 58 | numRanks = GetNumberOfRanks() |
| 59 | for r in ranks: |
| 60 | if r < numRanks: |
| 61 | expectedRanks.append(r) |
| 62 | |
| 63 | if dataRanks != expectedRanks: |
| 64 | print_error("ranks mismatch %s != %s", repr(dataRanks), repr(expectedRanks)) |
| 65 | return False |
| 66 | |
| 67 | # ensure we got valid data from all ranks |
| 68 | for rank, data in dataMap.items(): |
| 69 | if not ValidateData(producer, data): |
| 70 | print_error("bad data from rank %d", rank) |
| 71 | return False |
| 72 | return True |
| 73 | |
| 74 | if __name__ == "__main__": |
| 75 | wavelet = Wavelet() |
no test coverage detected