diff --git a/utils/test/com/cloud/utils/DummyImpl.java b/utils/test/com/cloud/utils/DummyImpl.java
new file mode 100644
index 00000000000..467d8e23f98
--- /dev/null
+++ b/utils/test/com/cloud/utils/DummyImpl.java
@@ -0,0 +1,28 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package com.cloud.utils;
+
+import org.springframework.stereotype.Component;
+
+@Component
+public class DummyImpl implements DummyInterface {
+
+ @Override
+ public void foo() {
+ System.out.println("Basic foo implementation");
+ }
+}
diff --git a/utils/test/com/cloud/utils/DummyInterface.java b/utils/test/com/cloud/utils/DummyInterface.java
new file mode 100644
index 00000000000..f79a53eda9c
--- /dev/null
+++ b/utils/test/com/cloud/utils/DummyInterface.java
@@ -0,0 +1,21 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package com.cloud.utils;
+
+public interface DummyInterface {
+ void foo();
+}
diff --git a/utils/test/com/cloud/utils/DummyPremiumImpl.java b/utils/test/com/cloud/utils/DummyPremiumImpl.java
new file mode 100644
index 00000000000..111f08701e6
--- /dev/null
+++ b/utils/test/com/cloud/utils/DummyPremiumImpl.java
@@ -0,0 +1,30 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package com.cloud.utils;
+
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Component;
+
+@Component
+@Primary
+public class DummyPremiumImpl implements DummyInterface {
+
+ @Override
+ public void foo() {
+ System.out.println("Premium foo implementation");
+ }
+}
diff --git a/utils/test/com/cloud/utils/QualifierTest.java b/utils/test/com/cloud/utils/QualifierTest.java
new file mode 100644
index 00000000000..10c0e815991
--- /dev/null
+++ b/utils/test/com/cloud/utils/QualifierTest.java
@@ -0,0 +1,36 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package com.cloud.utils;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations="classpath:/com/cloud/utils/QualifierTestContext.xml")
+public class QualifierTest {
+
+ @Autowired
+ DummyInterface _dummy;
+
+ @Test
+ public void test() {
+ _dummy.foo();
+ }
+}
diff --git a/utils/test/com/cloud/utils/db/DbAnnotatedBase.java b/utils/test/com/cloud/utils/db/DbAnnotatedBase.java
index c9b77b7de41..2160a35dbf7 100644
--- a/utils/test/com/cloud/utils/db/DbAnnotatedBase.java
+++ b/utils/test/com/cloud/utils/db/DbAnnotatedBase.java
@@ -16,6 +16,11 @@
// under the License.
package com.cloud.utils.db;
+
+import javax.annotation.PostConstruct;
+
+import junit.framework.Assert;
+
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
@@ -24,6 +29,11 @@ import org.springframework.stereotype.Component;
public class DbAnnotatedBase {
private static final Logger s_logger = Logger.getLogger(DbAnnotatedBase.class);
+ @PostConstruct
+ public void initTest() {
+ Assert.assertTrue(true);
+ }
+
public void MethodWithClassDbAnnotated() {
s_logger.info("called");
}
diff --git a/utils/test/com/cloud/utils/db/TransactionContextBuilderTest.java b/utils/test/com/cloud/utils/db/TransactionContextBuilderTest.java
index 74e0ab9bcb2..ca9d47a224a 100644
--- a/utils/test/com/cloud/utils/db/TransactionContextBuilderTest.java
+++ b/utils/test/com/cloud/utils/db/TransactionContextBuilderTest.java
@@ -8,7 +8,7 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations="classpath:/transactioncontextBuilderTest.xml")
+@ContextConfiguration(locations="classpath:/com/cloud/utils/db/transactioncontextBuilderTest.xml")
public class TransactionContextBuilderTest {
@Inject
diff --git a/utils/test/resources/com/cloud/utils/QualifierTestContext.xml b/utils/test/resources/com/cloud/utils/QualifierTestContext.xml
new file mode 100644
index 00000000000..c045f985b69
--- /dev/null
+++ b/utils/test/resources/com/cloud/utils/QualifierTestContext.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
diff --git a/utils/test/resources/transactionContextBuilderTest.xml b/utils/test/resources/com/cloud/utils/db/transactionContextBuilderTest.xml
similarity index 99%
rename from utils/test/resources/transactionContextBuilderTest.xml
rename to utils/test/resources/com/cloud/utils/db/transactionContextBuilderTest.xml
index 4672343a0e2..8a34670f39d 100644
--- a/utils/test/resources/transactionContextBuilderTest.xml
+++ b/utils/test/resources/com/cloud/utils/db/transactionContextBuilderTest.xml
@@ -14,7 +14,6 @@
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
-