@Override
        public void run() {
          InternalDistributedSystem sys = getSystem();
          assertNotNull(sys.getConfig().getRoles());
          assertTrue(sys.getConfig().getRoles().equals(vmRoles[vm]));

          DistributionManager dm = sys.getDistributionManager();
          InternalDistributedMember self = dm.getDistributionManagerId();

          Set myRoles = self.getRoles();
          assertEquals(1, myRoles.size());

          Role myRole = (Role) myRoles.iterator().next();
          assertTrue(vmRoles[vm].equals(myRole.getName()));

          await()
              .until(() -> dm.getOtherNormalDistributionManagerIds().size() == 3);
          Set<InternalDistributedMember> members = dm.getOtherNormalDistributionManagerIds();

          for (InternalDistributedMember member : members) {
            Set roles = member.getRoles();
            assertEquals(1, roles.size());
            for (final Object o : roles) {
              Role role = (Role) o;
              assertTrue(!role.getName().equals(myRole.getName()));
              boolean foundRole = false;
              for (final String vmRole : vmRoles) {
                if (vmRole.equals(role.getName())) {
                  foundRole = true;
                  break;
                }
              }
              assertTrue(foundRole);
            }
          }
        }
Tests the configuration of one unique Role in each of four vms. Verifies that each vm is aware
of the other vms' Roles.
geode-core/src/distributedTest/java/org/apache/geode/distributed/DistributedMemberDUnitTest.java