# HG changeset patch # User Omair Majid # Date 1363971951 14400 # Node ID 90fa1f866982fdfdf2a91e0a2bd4d86a97cf7fbd # Parent 3526e4183714ca694572aa929476918fe41dd90d Hide living-vm-filter's bundle activator Reviewed-by: neugens Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-March/006167.html diff -r 3526e4183714 -r 90fa1f866982 client/living-vm-filter/core/pom.xml --- 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 @@ com.redhat.thermostat.client.filter.vm.core - com.redhat.thermostat.client.filter.vm.core.VMFilterActivator + com.redhat.thermostat.client.filter.vm.core.internal + com.redhat.thermostat.client.filter.vm.core.internal.VMFilterActivator com.redhat.thermostat.filter.livingvm.core Red Hat, Inc. diff -r 3526e4183714 -r 90fa1f866982 client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/LivingVMFilter.java --- 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; + } } diff -r 3526e4183714 -r 90fa1f866982 client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/LivingVMFilterMenuAction.java --- 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 - * . - * - * 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() }; - } -} - diff -r 3526e4183714 -r 90fa1f866982 client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/VMFilterActivator.java --- 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 - * . - * - * 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 registeredServices = Collections.synchronizedList(new ArrayList()); - - 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 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 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(); - } - } - -} - diff -r 3526e4183714 -r 90fa1f866982 client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/internal/LivingVMFilterMenuAction.java --- /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 + * . + * + * 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() }; + } +} + diff -r 3526e4183714 -r 90fa1f866982 client/living-vm-filter/core/src/main/java/com/redhat/thermostat/client/filter/vm/core/internal/VMFilterActivator.java --- /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 + * . + * + * 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 registeredServices = Collections.synchronizedList(new ArrayList()); + + 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 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 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(); + } + } + +} + diff -r 3526e4183714 -r 90fa1f866982 client/living-vm-filter/core/src/test/java/com/redhat/thermostat/client/filter/vm/core/LivingVMFilterTest.java --- 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 - * . - * - * 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)); - } - -} - diff -r 3526e4183714 -r 90fa1f866982 client/living-vm-filter/core/src/test/java/com/redhat/thermostat/client/filter/vm/core/VMFilterActivatorTest.java --- 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 - * . - * - * 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)); - } - -} - diff -r 3526e4183714 -r 90fa1f866982 client/living-vm-filter/core/src/test/java/com/redhat/thermostat/client/filter/vm/core/internal/LivingVMFilterTest.java --- /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 + * . + * + * 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)); + } + +} + diff -r 3526e4183714 -r 90fa1f866982 client/living-vm-filter/core/src/test/java/com/redhat/thermostat/client/filter/vm/core/internal/VMFilterActivatorTest.java --- /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 + * . + * + * 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)); + } + +} +