changeset 1046:90fa1f866982

Hide living-vm-filter's bundle activator Reviewed-by: neugens Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-March/006167.html
author Omair Majid <omajid@redhat.com>
date Fri, 22 Mar 2013 13:05:51 -0400
parents 3526e4183714
children 7dc61d031410
files client/living-vm-filter/core/pom.xml client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/LivingVMFilter.java client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/LivingVMFilterMenuAction.java client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/VMFilterActivator.java client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/internal/LivingVMFilterMenuAction.java client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/internal/VMFilterActivator.java client/living-vm-filter/core/src/test/java/com/redhat/thermostat/client/filter/vm/core/LivingVMFilterTest.java client/living-vm-filter/core/src/test/java/com/redhat/thermostat/client/filter/vm/core/VMFilterActivatorTest.java client/living-vm-filter/core/src/test/java/com/redhat/thermostat/client/filter/vm/core/internal/LivingVMFilterTest.java client/living-vm-filter/core/src/test/java/com/redhat/thermostat/client/filter/vm/core/internal/VMFilterActivatorTest.java
diffstat 10 files changed, 368 insertions(+), 355 deletions(-) [+]
line wrap: on
line diff
--- a/client/living-vm-filter/core/pom.xml	Fri Mar 22 12:01:35 2013 -0400
+++ b/client/living-vm-filter/core/pom.xml	Fri Mar 22 13:05:51 2013 -0400
@@ -26,7 +26,8 @@
         <configuration>
           <instructions>
             <Export-Package>com.redhat.thermostat.client.filter.vm.core</Export-Package>
-            <Bundle-Activator>com.redhat.thermostat.client.filter.vm.core.VMFilterActivator</Bundle-Activator>
+            <Private-Package>com.redhat.thermostat.client.filter.vm.core.internal</Private-Package>
+            <Bundle-Activator>com.redhat.thermostat.client.filter.vm.core.internal.VMFilterActivator</Bundle-Activator>
             <Bundle-SymbolicName>com.redhat.thermostat.filter.livingvm.core</Bundle-SymbolicName>
             <Bundle-Vendor>Red Hat, Inc.</Bundle-Vendor>
             <!-- Do not autogenerate uses clauses in Manifests -->
--- a/client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/LivingVMFilter.java	Fri Mar 22 12:01:35 2013 -0400
+++ b/client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/LivingVMFilter.java	Fri Mar 22 13:05:51 2013 -0400
@@ -59,5 +59,13 @@
         VmInfo vmInfo = dao.getVmInfo(ref);
         return vmInfo.isAlive();
     }
+
+    public void setActive(boolean active) {
+        this.filterActive = active;
+    }
+
+    public boolean isActive() {
+        return filterActive;
+    }
 }
 
--- a/client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/LivingVMFilterMenuAction.java	Fri Mar 22 12:01:35 2013 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
- * Copyright 2012, 2013 Red Hat, Inc.
- *
- * This file is part of Thermostat.
- *
- * Thermostat is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your
- * option) any later version.
- *
- * Thermostat 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 for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Thermostat; see the file COPYING.  If not see
- * <http://www.gnu.org/licenses/>.
- *
- * Linking this code with other modules is making a combined work
- * based on this code.  Thus, the terms and conditions of the GNU
- * General Public License cover the whole combination.
- *
- * As a special exception, the copyright holders of this code give
- * you permission to link this code with independent modules to
- * produce an executable, regardless of the license terms of these
- * independent modules, and to copy and distribute the resulting
- * executable under terms of your choice, provided that you also
- * meet, for each linked independent module, the terms and conditions
- * of the license of that module.  An independent module is a module
- * which is not derived from or based on this code.  If you modify
- * this code, you may extend this exception to your version of the
- * library, but you are not obligated to do so.  If you do not wish
- * to do so, delete this exception statement from your version.
- */
-
-package com.redhat.thermostat.client.filter.vm.core;
-
-import com.redhat.thermostat.client.ui.MenuAction;
-
-class LivingVMFilterMenuAction implements MenuAction {
-
-    private LivingVMFilter filter;
-    
-    public LivingVMFilterMenuAction(LivingVMFilter filter) {
-        this.filter = filter;
-    }
-    
-    @Override
-    public String getName() {
-        return "Show Non Living VM";
-    }
-
-    @Override
-    public String getDescription() {
-        return "Shows non living VM in the vm list";
-    }
-
-    @Override
-    public void execute() {
-        filter.filterActive = !filter.filterActive;
-    }
-
-    @Override
-    public Type getType() {
-        return Type.CHECK;
-    }
-
-    @Override
-    public String[] getPath() {
-        return new String[] { "Edit", getName() };
-    }
-}
-
--- a/client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/VMFilterActivator.java	Fri Mar 22 12:01:35 2013 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-/*
- * Copyright 2012, 2013 Red Hat, Inc.
- *
- * This file is part of Thermostat.
- *
- * Thermostat is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your
- * option) any later version.
- *
- * Thermostat 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 for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Thermostat; see the file COPYING.  If not see
- * <http://www.gnu.org/licenses/>.
- *
- * Linking this code with other modules is making a combined work
- * based on this code.  Thus, the terms and conditions of the GNU
- * General Public License cover the whole combination.
- *
- * As a special exception, the copyright holders of this code give
- * you permission to link this code with independent modules to
- * produce an executable, regardless of the license terms of these
- * independent modules, and to copy and distribute the resulting
- * executable under terms of your choice, provided that you also
- * meet, for each linked independent module, the terms and conditions
- * of the license of that module.  An independent module is a module
- * which is not derived from or based on this code.  If you modify
- * this code, you may extend this exception to your version of the
- * library, but you are not obligated to do so.  If you do not wish
- * to do so, delete this exception statement from your version.
- */
-
-package com.redhat.thermostat.client.filter.vm.core;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Dictionary;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.util.tracker.ServiceTracker;
-
-import com.redhat.thermostat.client.core.Filter;
-import com.redhat.thermostat.client.ui.MenuAction;
-import com.redhat.thermostat.common.Constants;
-import com.redhat.thermostat.storage.core.VmRef;
-import com.redhat.thermostat.storage.dao.VmInfoDAO;
-
-public class VMFilterActivator implements BundleActivator {
-
-    private final List<ServiceRegistration> registeredServices = Collections.synchronizedList(new ArrayList<ServiceRegistration>());
-
-    ServiceTracker vmInfoDaoTracker;
-
-    @Override
-    public void start(BundleContext context) throws Exception {
-        
-        vmInfoDaoTracker = new ServiceTracker(context, VmInfoDAO.class.getName(), null) {
-            @Override
-            public Object addingService(ServiceReference reference) {
-                VmInfoDAO dao = (VmInfoDAO) context.getService(reference);
-
-                LivingVMFilter filter = new LivingVMFilter(dao);
-                
-                LivingVMFilterMenuAction menu = new LivingVMFilterMenuAction(filter);
-
-                ServiceRegistration registration = null;
-                
-                registration = context.registerService(MenuAction.class.getName(), menu, null);
-                registeredServices.add(registration);
-
-                Dictionary<String, String> properties = new Hashtable<>();
-                properties.put(Constants.GENERIC_SERVICE_CLASSNAME, VmRef.class.getName());
-                registration = context.registerService(Filter.class.getName(), filter, properties);
-                registeredServices.add(registration);
-
-                return super.addingService(reference);
-            }
-
-            @Override
-            public void removedService(ServiceReference reference, Object service) {
-                Iterator<ServiceRegistration> iterator = registeredServices.iterator();
-                while(iterator.hasNext()) {
-                    ServiceRegistration registration = iterator.next();
-                    registration.unregister();
-                    iterator.remove();
-                }
-
-                context.ungetService(reference);
-                super.removedService(reference, service);
-            }
-        };
-        vmInfoDaoTracker.open();
-    }
-    
-    @Override
-    public void stop(BundleContext context) throws Exception {
-        vmInfoDaoTracker.close();
-        
-        for (ServiceRegistration registration : registeredServices) {
-            registration.unregister();
-        }
-    }
-    
-}
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/internal/LivingVMFilterMenuAction.java	Fri Mar 22 13:05:51 2013 -0400
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2012, 2013 Red Hat, Inc.
+ *
+ * This file is part of Thermostat.
+ *
+ * Thermostat is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2, or (at your
+ * option) any later version.
+ *
+ * Thermostat 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 for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Thermostat; see the file COPYING.  If not see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Linking this code with other modules is making a combined work
+ * based on this code.  Thus, the terms and conditions of the GNU
+ * General Public License cover the whole combination.
+ *
+ * As a special exception, the copyright holders of this code give
+ * you permission to link this code with independent modules to
+ * produce an executable, regardless of the license terms of these
+ * independent modules, and to copy and distribute the resulting
+ * executable under terms of your choice, provided that you also
+ * meet, for each linked independent module, the terms and conditions
+ * of the license of that module.  An independent module is a module
+ * which is not derived from or based on this code.  If you modify
+ * this code, you may extend this exception to your version of the
+ * library, but you are not obligated to do so.  If you do not wish
+ * to do so, delete this exception statement from your version.
+ */
+
+package com.redhat.thermostat.client.filter.vm.core.internal;
+
+import com.redhat.thermostat.client.filter.vm.core.LivingVMFilter;
+import com.redhat.thermostat.client.ui.MenuAction;
+
+class LivingVMFilterMenuAction implements MenuAction {
+
+    private LivingVMFilter filter;
+    
+    public LivingVMFilterMenuAction(LivingVMFilter filter) {
+        this.filter = filter;
+    }
+    
+    @Override
+    public String getName() {
+        return "Show Non Living VM";
+    }
+
+    @Override
+    public String getDescription() {
+        return "Shows non living VM in the vm list";
+    }
+
+    @Override
+    public void execute() {
+        filter.setActive(!filter.isActive());
+    }
+
+    @Override
+    public Type getType() {
+        return Type.CHECK;
+    }
+
+    @Override
+    public String[] getPath() {
+        return new String[] { "Edit", getName() };
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/internal/VMFilterActivator.java	Fri Mar 22 13:05:51 2013 -0400
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2012, 2013 Red Hat, Inc.
+ *
+ * This file is part of Thermostat.
+ *
+ * Thermostat is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2, or (at your
+ * option) any later version.
+ *
+ * Thermostat 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 for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Thermostat; see the file COPYING.  If not see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Linking this code with other modules is making a combined work
+ * based on this code.  Thus, the terms and conditions of the GNU
+ * General Public License cover the whole combination.
+ *
+ * As a special exception, the copyright holders of this code give
+ * you permission to link this code with independent modules to
+ * produce an executable, regardless of the license terms of these
+ * independent modules, and to copy and distribute the resulting
+ * executable under terms of your choice, provided that you also
+ * meet, for each linked independent module, the terms and conditions
+ * of the license of that module.  An independent module is a module
+ * which is not derived from or based on this code.  If you modify
+ * this code, you may extend this exception to your version of the
+ * library, but you are not obligated to do so.  If you do not wish
+ * to do so, delete this exception statement from your version.
+ */
+
+package com.redhat.thermostat.client.filter.vm.core.internal;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Dictionary;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.util.tracker.ServiceTracker;
+
+import com.redhat.thermostat.client.core.Filter;
+import com.redhat.thermostat.client.filter.vm.core.LivingVMFilter;
+import com.redhat.thermostat.client.ui.MenuAction;
+import com.redhat.thermostat.common.Constants;
+import com.redhat.thermostat.storage.core.VmRef;
+import com.redhat.thermostat.storage.dao.VmInfoDAO;
+
+public class VMFilterActivator implements BundleActivator {
+
+    private final List<ServiceRegistration> registeredServices = Collections.synchronizedList(new ArrayList<ServiceRegistration>());
+
+    ServiceTracker vmInfoDaoTracker;
+
+    @Override
+    public void start(BundleContext context) throws Exception {
+        
+        vmInfoDaoTracker = new ServiceTracker(context, VmInfoDAO.class.getName(), null) {
+            @Override
+            public Object addingService(ServiceReference reference) {
+                VmInfoDAO dao = (VmInfoDAO) context.getService(reference);
+
+                LivingVMFilter filter = new LivingVMFilter(dao);
+                
+                LivingVMFilterMenuAction menu = new LivingVMFilterMenuAction(filter);
+
+                ServiceRegistration registration = null;
+                
+                registration = context.registerService(MenuAction.class.getName(), menu, null);
+                registeredServices.add(registration);
+
+                Dictionary<String, String> properties = new Hashtable<>();
+                properties.put(Constants.GENERIC_SERVICE_CLASSNAME, VmRef.class.getName());
+                registration = context.registerService(Filter.class.getName(), filter, properties);
+                registeredServices.add(registration);
+
+                return super.addingService(reference);
+            }
+
+            @Override
+            public void removedService(ServiceReference reference, Object service) {
+                Iterator<ServiceRegistration> iterator = registeredServices.iterator();
+                while(iterator.hasNext()) {
+                    ServiceRegistration registration = iterator.next();
+                    registration.unregister();
+                    iterator.remove();
+                }
+
+                context.ungetService(reference);
+                super.removedService(reference, service);
+            }
+        };
+        vmInfoDaoTracker.open();
+    }
+    
+    @Override
+    public void stop(BundleContext context) throws Exception {
+        vmInfoDaoTracker.close();
+        
+        for (ServiceRegistration registration : registeredServices) {
+            registration.unregister();
+        }
+    }
+    
+}
+
--- a/client/living-vm-filter/core/src/test/java/com/redhat/thermostat/client/filter/vm/core/LivingVMFilterTest.java	Fri Mar 22 12:01:35 2013 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
- * Copyright 2012, 2013 Red Hat, Inc.
- *
- * This file is part of Thermostat.
- *
- * Thermostat is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your
- * option) any later version.
- *
- * Thermostat 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 for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Thermostat; see the file COPYING.  If not see
- * <http://www.gnu.org/licenses/>.
- *
- * Linking this code with other modules is making a combined work
- * based on this code.  Thus, the terms and conditions of the GNU
- * General Public License cover the whole combination.
- *
- * As a special exception, the copyright holders of this code give
- * you permission to link this code with independent modules to
- * produce an executable, regardless of the license terms of these
- * independent modules, and to copy and distribute the resulting
- * executable under terms of your choice, provided that you also
- * meet, for each linked independent module, the terms and conditions
- * of the license of that module.  An independent module is a module
- * which is not derived from or based on this code.  If you modify
- * this code, you may extend this exception to your version of the
- * library, but you are not obligated to do so.  If you do not wish
- * to do so, delete this exception statement from your version.
- */
-
-package com.redhat.thermostat.client.filter.vm.core;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import com.redhat.thermostat.client.filter.vm.core.LivingVMFilter;
-import com.redhat.thermostat.client.filter.vm.core.LivingVMFilterMenuAction;
-import com.redhat.thermostat.storage.core.VmRef;
-import com.redhat.thermostat.storage.dao.VmInfoDAO;
-import com.redhat.thermostat.storage.model.VmInfo;
-
-public class LivingVMFilterTest {
-
-    private VmInfoDAO dao;
-    private VmRef vmRef1;
-    private VmRef vmRef2;
-    
-    private VmInfo vmInfo1;
-    private VmInfo vmInfo2;
-    
-    @Before
-    public void setUp() {
-        dao = mock(VmInfoDAO.class);
-        
-        vmRef1 = mock(VmRef.class);
-        vmRef2 = mock(VmRef.class);
-        
-        vmInfo1 = mock(VmInfo.class);
-        vmInfo2 = mock(VmInfo.class);
-        
-        when(dao.getVmInfo(vmRef1)).thenReturn(vmInfo1);
-        when(dao.getVmInfo(vmRef2)).thenReturn(vmInfo2);
-        
-        when(vmInfo1.isAlive()).thenReturn(true);
-        when(vmInfo2.isAlive()).thenReturn(false);
-    }
-    
-    @Test
-    public void testFilter() {
-        LivingVMFilter filter = new LivingVMFilter(dao);
-        LivingVMFilterMenuAction action = new LivingVMFilterMenuAction(filter);
-        
-        assertTrue(filter.matches(vmRef1));
-        assertFalse(filter.matches(vmRef2));
-        
-        action.execute();
-        
-        assertTrue(filter.matches(vmRef1));
-        assertTrue(filter.matches(vmRef2));
-    }
-
-}
-
--- a/client/living-vm-filter/core/src/test/java/com/redhat/thermostat/client/filter/vm/core/VMFilterActivatorTest.java	Fri Mar 22 12:01:35 2013 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
- * Copyright 2012, 2013 Red Hat, Inc.
- *
- * This file is part of Thermostat.
- *
- * Thermostat is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your
- * option) any later version.
- *
- * Thermostat 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 for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Thermostat; see the file COPYING.  If not see
- * <http://www.gnu.org/licenses/>.
- *
- * Linking this code with other modules is making a combined work
- * based on this code.  Thus, the terms and conditions of the GNU
- * General Public License cover the whole combination.
- *
- * As a special exception, the copyright holders of this code give
- * you permission to link this code with independent modules to
- * produce an executable, regardless of the license terms of these
- * independent modules, and to copy and distribute the resulting
- * executable under terms of your choice, provided that you also
- * meet, for each linked independent module, the terms and conditions
- * of the license of that module.  An independent module is a module
- * which is not derived from or based on this code.  If you modify
- * this code, you may extend this exception to your version of the
- * library, but you are not obligated to do so.  If you do not wish
- * to do so, delete this exception statement from your version.
- */
-
-package com.redhat.thermostat.client.filter.vm.core;
-
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-
-import org.junit.Test;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-
-import com.redhat.thermostat.client.core.Filter;
-import com.redhat.thermostat.client.ui.MenuAction;
-import com.redhat.thermostat.storage.dao.VmInfoDAO;
-import com.redhat.thermostat.testutils.StubBundleContext;
-import com.redhat.thermostat.testutils.StubServiceReference;
-import com.redhat.thermostat.testutils.StubServiceRegistration;
-
-public class VMFilterActivatorTest {
-    
-    @Test
-    public void testServicesRegistered() throws Exception {
-        StubBundleContext ctx = new StubBundleContext();
-        VMFilterActivator activator = new VMFilterActivator();
-        activator.start(ctx);
-        
-        VmInfoDAO dao = mock(VmInfoDAO.class);
-        ServiceRegistration reg = ctx.registerService(VmInfoDAO.class, dao, null);
-        ServiceReference ref = reg.getReference();
-        activator.vmInfoDaoTracker.addingService(ref);
-        
-        assertTrue(ctx.isServiceRegistered(MenuAction.class.getName(), LivingVMFilterMenuAction.class));
-        assertTrue(ctx.isServiceRegistered(Filter.class.getName(), LivingVMFilter.class));
-    }
-
-}
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/client/living-vm-filter/core/src/test/java/com/redhat/thermostat/client/filter/vm/core/internal/LivingVMFilterTest.java	Fri Mar 22 13:05:51 2013 -0400
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2012, 2013 Red Hat, Inc.
+ *
+ * This file is part of Thermostat.
+ *
+ * Thermostat is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2, or (at your
+ * option) any later version.
+ *
+ * Thermostat 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 for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Thermostat; see the file COPYING.  If not see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Linking this code with other modules is making a combined work
+ * based on this code.  Thus, the terms and conditions of the GNU
+ * General Public License cover the whole combination.
+ *
+ * As a special exception, the copyright holders of this code give
+ * you permission to link this code with independent modules to
+ * produce an executable, regardless of the license terms of these
+ * independent modules, and to copy and distribute the resulting
+ * executable under terms of your choice, provided that you also
+ * meet, for each linked independent module, the terms and conditions
+ * of the license of that module.  An independent module is a module
+ * which is not derived from or based on this code.  If you modify
+ * this code, you may extend this exception to your version of the
+ * library, but you are not obligated to do so.  If you do not wish
+ * to do so, delete this exception statement from your version.
+ */
+
+package com.redhat.thermostat.client.filter.vm.core.internal;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.redhat.thermostat.client.filter.vm.core.LivingVMFilter;
+import com.redhat.thermostat.client.filter.vm.core.internal.LivingVMFilterMenuAction;
+import com.redhat.thermostat.storage.core.VmRef;
+import com.redhat.thermostat.storage.dao.VmInfoDAO;
+import com.redhat.thermostat.storage.model.VmInfo;
+
+public class LivingVMFilterTest {
+
+    private VmInfoDAO dao;
+    private VmRef vmRef1;
+    private VmRef vmRef2;
+    
+    private VmInfo vmInfo1;
+    private VmInfo vmInfo2;
+    
+    @Before
+    public void setUp() {
+        dao = mock(VmInfoDAO.class);
+        
+        vmRef1 = mock(VmRef.class);
+        vmRef2 = mock(VmRef.class);
+        
+        vmInfo1 = mock(VmInfo.class);
+        vmInfo2 = mock(VmInfo.class);
+        
+        when(dao.getVmInfo(vmRef1)).thenReturn(vmInfo1);
+        when(dao.getVmInfo(vmRef2)).thenReturn(vmInfo2);
+        
+        when(vmInfo1.isAlive()).thenReturn(true);
+        when(vmInfo2.isAlive()).thenReturn(false);
+    }
+    
+    @Test
+    public void testFilter() {
+        LivingVMFilter filter = new LivingVMFilter(dao);
+        LivingVMFilterMenuAction action = new LivingVMFilterMenuAction(filter);
+        
+        assertTrue(filter.matches(vmRef1));
+        assertFalse(filter.matches(vmRef2));
+        
+        action.execute();
+        
+        assertTrue(filter.matches(vmRef1));
+        assertTrue(filter.matches(vmRef2));
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/client/living-vm-filter/core/src/test/java/com/redhat/thermostat/client/filter/vm/core/internal/VMFilterActivatorTest.java	Fri Mar 22 13:05:51 2013 -0400
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2012, 2013 Red Hat, Inc.
+ *
+ * This file is part of Thermostat.
+ *
+ * Thermostat is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2, or (at your
+ * option) any later version.
+ *
+ * Thermostat 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 for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Thermostat; see the file COPYING.  If not see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Linking this code with other modules is making a combined work
+ * based on this code.  Thus, the terms and conditions of the GNU
+ * General Public License cover the whole combination.
+ *
+ * As a special exception, the copyright holders of this code give
+ * you permission to link this code with independent modules to
+ * produce an executable, regardless of the license terms of these
+ * independent modules, and to copy and distribute the resulting
+ * executable under terms of your choice, provided that you also
+ * meet, for each linked independent module, the terms and conditions
+ * of the license of that module.  An independent module is a module
+ * which is not derived from or based on this code.  If you modify
+ * this code, you may extend this exception to your version of the
+ * library, but you are not obligated to do so.  If you do not wish
+ * to do so, delete this exception statement from your version.
+ */
+
+package com.redhat.thermostat.client.filter.vm.core.internal;
+
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+
+import org.junit.Test;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
+
+import com.redhat.thermostat.client.core.Filter;
+import com.redhat.thermostat.client.filter.vm.core.LivingVMFilter;
+import com.redhat.thermostat.client.filter.vm.core.internal.VMFilterActivator;
+import com.redhat.thermostat.client.ui.MenuAction;
+import com.redhat.thermostat.storage.dao.VmInfoDAO;
+import com.redhat.thermostat.testutils.StubBundleContext;
+import com.redhat.thermostat.testutils.StubServiceReference;
+import com.redhat.thermostat.testutils.StubServiceRegistration;
+
+public class VMFilterActivatorTest {
+    
+    @Test
+    public void testServicesRegistered() throws Exception {
+        StubBundleContext ctx = new StubBundleContext();
+        VMFilterActivator activator = new VMFilterActivator();
+        activator.start(ctx);
+        
+        VmInfoDAO dao = mock(VmInfoDAO.class);
+        ServiceRegistration reg = ctx.registerService(VmInfoDAO.class, dao, null);
+        ServiceReference ref = reg.getReference();
+        activator.vmInfoDaoTracker.addingService(ref);
+        
+        assertTrue(ctx.isServiceRegistered(MenuAction.class.getName(), LivingVMFilterMenuAction.class));
+        assertTrue(ctx.isServiceRegistered(Filter.class.getName(), LivingVMFilter.class));
+    }
+
+}
+