jdk/test/javax/management/eventService/EventClientExecutorTest.java
changeset 4159 9e3aae7675f1
parent 4158 0b4d21bc8b5c
parent 4156 acaa49a2768a
child 4160 bda0a85afcb7
--- a/jdk/test/javax/management/eventService/EventClientExecutorTest.java	Wed Oct 21 15:47:09 2009 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-/*
- * @test
- * @bug 5108776
- * @summary Test that the various Executor parameters in an EventClient do
- * what they are supposed to.
- * @author Eamonn McManus
- */
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadFactory;
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
-import javax.management.Notification;
-import javax.management.NotificationBroadcasterSupport;
-import javax.management.NotificationListener;
-import javax.management.ObjectName;
-import javax.management.event.EventClient;
-import javax.management.event.EventClientDelegate;
-import javax.management.event.EventClientDelegateMBean;
-import javax.management.event.FetchingEventRelay;
-import javax.management.remote.MBeanServerForwarder;
-
-public class EventClientExecutorTest {
-    private static volatile String failure;
-    private static final Set testedPrefixes = new HashSet();
-
-    public static void main(String[] args) throws Exception {
-        Executor fetchExecutor = Executors.newSingleThreadExecutor(
-                new NamedThreadFactory("FETCH"));
-        Executor listenerExecutor = Executors.newSingleThreadExecutor(
-                new NamedThreadFactory("LISTENER"));
-        ScheduledExecutorService leaseScheduler =
-            Executors.newSingleThreadScheduledExecutor(
-                new NamedThreadFactory("LEASE"));
-
-        MBeanServer mbs = MBeanServerFactory.newMBeanServer();
-        MBeanServerForwarder mbsf = EventClientDelegate.newForwarder(mbs, null);
-        mbs = mbsf;
-
-        EventClientDelegateMBean ecd = EventClientDelegate.getProxy(mbs);
-        ecd = (EventClientDelegateMBean) Proxy.newProxyInstance(
-                EventClientDelegateMBean.class.getClassLoader(),
-                new Class<?>[] {EventClientDelegateMBean.class},
-                new DelegateCheckIH(ecd));
-
-        ObjectName mbeanName = new ObjectName("d:type=Notifier");
-        Notifier notifier = new Notifier();
-        mbs.registerMBean(notifier, mbeanName);
-
-        FetchingEventRelay eventRelay = new FetchingEventRelay(
-                ecd, fetchExecutor);
-        EventClient ec = new EventClient(
-                ecd, eventRelay, listenerExecutor, leaseScheduler, 1000L);
-        NotificationListener checkListener = new NotificationListener() {
-            public void handleNotification(Notification notification,
-                                           Object handback) {
-                assertThreadName("listener dispatch", "LISTENER");
-            }
-        };
-        ec.addNotificationListener(mbeanName, checkListener, null, null);
-
-        mbs.invoke(mbeanName, "send", null, null);
-
-        // Now wait until we have seen all three thread types.
-        long deadline = System.currentTimeMillis() + 5000;
-        synchronized (testedPrefixes) {
-            while (testedPrefixes.size() < 3 && failure == null) {
-                long remain = deadline - System.currentTimeMillis();
-                if (remain <= 0) {
-                    fail("Timed out waiting for all three thread types to show, " +
-                            "saw only " + testedPrefixes);
-                    break;
-                }
-                try {
-                    testedPrefixes.wait(remain);
-                } catch (InterruptedException e) {
-                    fail("Unexpected InterruptedException");
-                    break;
-                }
-            }
-        }
-
-        // We deliberately don't close the EventClient to check that it has
-        // not created any non-daemon threads.
-
-        if (failure != null)
-            throw new Exception("TEST FAILED: " + failure);
-        else
-            System.out.println("TEST PASSED");
-    }
-
-    public static interface NotifierMBean {
-        public void send();
-    }
-
-    public static class Notifier extends NotificationBroadcasterSupport
-            implements NotifierMBean {
-        public void send() {
-            Notification n = new Notification("a.b.c", this, 0L);
-            sendNotification(n);
-        }
-    }
-
-    static void fail(String why) {
-        System.out.println("FAIL: " + why);
-        failure = why;
-    }
-
-    static void assertThreadName(String what, String prefix) {
-        String name = Thread.currentThread().getName();
-        if (!name.startsWith(prefix)) {
-            fail("Wrong thread for " + what + ": " + name);
-            return;
-        }
-
-        synchronized (testedPrefixes) {
-            if (testedPrefixes.add(prefix))
-                testedPrefixes.notify();
-        }
-    }
-
-    private static class DelegateCheckIH implements InvocationHandler {
-        private final EventClientDelegateMBean ecd;
-
-        public DelegateCheckIH(EventClientDelegateMBean ecd) {
-            this.ecd = ecd;
-        }
-
-        public Object invoke(Object proxy, Method method, Object[] args)
-                throws Throwable {
-            String methodName = method.getName();
-            if (methodName.equals("fetchNotifications"))
-                assertThreadName("fetchNotifications", "FETCH");
-            else if (methodName.equals("lease"))
-                assertThreadName("lease renewal", "LEASE");
-            try {
-                return method.invoke(ecd, args);
-            } catch (InvocationTargetException e) {
-                throw e.getCause();
-            }
-        }
-    }
-
-    private static class NamedThreadFactory implements ThreadFactory {
-        private final String namePrefix;
-        private int count;
-
-        NamedThreadFactory(String namePrefix) {
-            this.namePrefix = namePrefix;
-        }
-
-        public synchronized Thread newThread(Runnable r) {
-            Thread t = new Thread(r);
-            t.setName(namePrefix + " " + ++count);
-            t.setDaemon(true);
-            return t;
-        }
-    }
-}