jdk/test/javax/management/remote/mandatory/connectorServer/ForwarderChainTest.java
changeset 1570 4165709c91e3
parent 1004 5ba8217eb504
equal deleted inserted replaced
1569:54e1de48703e 1570:4165709c91e3
    84         MBeanServer mbs = MBeanServerFactory.newMBeanServer();
    84         MBeanServer mbs = MBeanServerFactory.newMBeanServer();
    85         cs = new RMIConnectorServer(url, null, mbs);
    85         cs = new RMIConnectorServer(url, null, mbs);
    86         test(cs, mbs);
    86         test(cs, mbs);
    87 
    87 
    88         System.out.println("===Remove any leftover forwarders===");
    88         System.out.println("===Remove any leftover forwarders===");
    89         while (cs.getSystemMBeanServer() instanceof MBeanServerForwarder) {
    89         MBeanServerForwarder systemMBSF = cs.getSystemMBeanServerForwarder();
    90             MBeanServerForwarder mbsf =
    90         // Real code would just do systemMBSF.setMBeanServer(mbs).
    91                     (MBeanServerForwarder) cs.getSystemMBeanServer();
    91         while (true) {
    92             cs.removeMBeanServerForwarder(mbsf);
    92             MBeanServer xmbs = systemMBSF.getMBeanServer();
       
    93             if (!(xmbs instanceof MBeanServerForwarder))
       
    94                 break;
       
    95             cs.removeMBeanServerForwarder((MBeanServerForwarder) xmbs);
    93         }
    96         }
    94         expectChain(cs, "U", mbs);
    97         expectChain(cs, "U", mbs);
    95 
    98 
    96         System.out.println("===Ensure forwarders are called===");
    99         System.out.println("===Ensure forwarders are called===");
    97         cs.setMBeanServerForwarder(forwarders[0]);
   100         cs.setMBeanServerForwarder(forwarders[0]);
    98         cs.setSystemMBeanServerForwarder(forwarders[1]);
   101         systemMBSF.setMBeanServer(forwarders[1]);
       
   102         forwarders[1].setMBeanServer(forwarders[0]);
    99         expectChain(cs, "1U0", mbs);
   103         expectChain(cs, "1U0", mbs);
   100         cs.start();
   104         cs.start();
   101         if (forwarders[0].defaultDomainCount != 0 ||
   105         if (forwarders[0].defaultDomainCount != 0 ||
   102                 forwarders[1].defaultDomainCount != 0) {
   106                 forwarders[1].defaultDomainCount != 0) {
   103             fail("defaultDomainCount not zero");
   107             fail("defaultDomainCount not zero");
   123     }
   127     }
   124 
   128 
   125     private static void test(JMXConnectorServer cs, MBeanServer end) {
   129     private static void test(JMXConnectorServer cs, MBeanServer end) {
   126         // A newly-created connector server might have system forwarders,
   130         // A newly-created connector server might have system forwarders,
   127         // so get rid of those.
   131         // so get rid of those.
   128         while (cs.getSystemMBeanServer() != cs.getMBeanServer())
   132         MBeanServerForwarder systemMBSF = cs.getSystemMBeanServerForwarder();
   129             cs.removeMBeanServerForwarder((MBeanServerForwarder) cs.getSystemMBeanServer());
   133         systemMBSF.setMBeanServer(cs.getMBeanServer());
   130 
   134 
   131         expectChain(cs, "U", end);
   135         expectChain(cs, "U", end);
   132 
   136 
   133         System.out.println("Add a user forwarder");
   137         System.out.println("Add a user forwarder");
   134         cs.setMBeanServerForwarder(forwarders[0]);
   138         cs.setMBeanServerForwarder(forwarders[0]);
   137         System.out.println("Add another user forwarder");
   141         System.out.println("Add another user forwarder");
   138         cs.setMBeanServerForwarder(forwarders[1]);
   142         cs.setMBeanServerForwarder(forwarders[1]);
   139         expectChain(cs, "U10", end);
   143         expectChain(cs, "U10", end);
   140 
   144 
   141         System.out.println("Add a system forwarder");
   145         System.out.println("Add a system forwarder");
   142         cs.setSystemMBeanServerForwarder(forwarders[2]);
   146         forwarders[2].setMBeanServer(systemMBSF.getMBeanServer());
       
   147         systemMBSF.setMBeanServer(forwarders[2]);
   143         expectChain(cs, "2U10", end);
   148         expectChain(cs, "2U10", end);
   144 
   149 
   145         System.out.println("Add another user forwarder");
   150         System.out.println("Add another user forwarder");
   146         cs.setMBeanServerForwarder(forwarders[3]);
   151         cs.setMBeanServerForwarder(forwarders[3]);
   147         expectChain(cs, "2U310", end);
   152         expectChain(cs, "2U310", end);
   148 
   153 
   149         System.out.println("Add another system forwarder");
   154         System.out.println("Add another system forwarder");
   150         cs.setSystemMBeanServerForwarder(forwarders[4]);
   155         forwarders[4].setMBeanServer(systemMBSF.getMBeanServer());
       
   156         systemMBSF.setMBeanServer(forwarders[4]);
   151         expectChain(cs, "42U310", end);
   157         expectChain(cs, "42U310", end);
   152 
   158 
   153         System.out.println("Remove the first user forwarder");
   159         System.out.println("Remove the first user forwarder");
   154         cs.removeMBeanServerForwarder(forwarders[3]);
   160         cs.removeMBeanServerForwarder(forwarders[3]);
   155         expectChain(cs, "42U10", end);
   161         expectChain(cs, "42U10", end);
   213                                 chain.substring(postu);
   219                                 chain.substring(postu);
   214                         break;
   220                         break;
   215                     }
   221                     }
   216                     case 2: { // add it to the system chain
   222                     case 2: { // add it to the system chain
   217                         System.out.println("Add " + c + " to system chain");
   223                         System.out.println("Add " + c + " to system chain");
   218                         if (cs.getSystemMBeanServer() == null)
   224                         mbsf.setMBeanServer(systemMBSF.getMBeanServer());
   219                             mbsf.setMBeanServer(null);
   225                         systemMBSF.setMBeanServer(mbsf);
   220                         cs.setSystemMBeanServerForwarder(mbsf);
       
   221                         chain = c + chain;
   226                         chain = c + chain;
   222                         break;
   227                         break;
   223                     }
   228                     }
   224                 }
   229                 }
   225             }
   230             }
   238      * After traversing the chains, we should be pointing at "end".
   243      * After traversing the chains, we should be pointing at "end".
   239      */
   244      */
   240     private static void expectChain(
   245     private static void expectChain(
   241             JMXConnectorServer cs, String chain, MBeanServer end) {
   246             JMXConnectorServer cs, String chain, MBeanServer end) {
   242         System.out.println("...expected chain: " + chain);
   247         System.out.println("...expected chain: " + chain);
   243         MBeanServer curr = cs.getSystemMBeanServer();
   248         MBeanServer curr = cs.getSystemMBeanServerForwarder().getMBeanServer();
   244         int i = 0;
   249         int i = 0;
   245         while (i < chain.length()) {
   250         while (i < chain.length()) {
   246             char c = chain.charAt(i);
   251             char c = chain.charAt(i);
   247             if (c == 'U') {
   252             if (c == 'U') {
   248                 if (cs.getMBeanServer() != curr) {
   253                 if (cs.getMBeanServer() != curr) {