modules/common/cassandra-ccm/cassandra-ccm-arquillian/src/main/java/org/rhq/cassandra/ccm/arquillian/CCMSuiteDeploymentExtension.java
| 2
modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/cloud/TopologyManagerBeanTest.java
| 65 ++++++++++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/TopologyManagerBean.java
| 9 +
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/TopologyManagerLocal.java
| 4
4 files changed, 79 insertions(+), 1 deletion(-)
New commits:
commit 5b5ff9067f5d90338e3628e9c0988ec6a8ef97e1
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Mon May 6 21:08:45 2013 +0200
Adding criteria finder for StorageNode entity and itest for the finder.
diff --git
a/modules/common/cassandra-ccm/cassandra-ccm-arquillian/src/main/java/org/rhq/cassandra/ccm/arquillian/CCMSuiteDeploymentExtension.java
b/modules/common/cassandra-ccm/cassandra-ccm-arquillian/src/main/java/org/rhq/cassandra/ccm/arquillian/CCMSuiteDeploymentExtension.java
index 25bbc69..b7073ae 100644
---
a/modules/common/cassandra-ccm/cassandra-ccm-arquillian/src/main/java/org/rhq/cassandra/ccm/arquillian/CCMSuiteDeploymentExtension.java
+++
b/modules/common/cassandra-ccm/cassandra-ccm-arquillian/src/main/java/org/rhq/cassandra/ccm/arquillian/CCMSuiteDeploymentExtension.java
@@ -113,7 +113,7 @@ public class CCMSuiteDeploymentExtension implements LoadableExtension
{
ccm.startCluster(false);
ClusterInitService clusterInitService = new ClusterInitService();
- clusterInitService.waitForClusterToStart(nodes, nodes.size(), 1500, 20, 2);
+ clusterInitService.waitForClusterToStart(nodes, nodes.size(), 1500, 20, 5);
SchemaManager schemaManager = new SchemaManager("cassandra",
"cassandra", nodes);
if (!schemaManager.schemaExists()) {
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/cloud/TopologyManagerBeanTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/cloud/TopologyManagerBeanTest.java
index cd2523e..f091e8d 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/cloud/TopologyManagerBeanTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/cloud/TopologyManagerBeanTest.java
@@ -30,7 +30,9 @@ import org.testng.annotations.Test;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.cloud.Server;
import org.rhq.core.domain.cloud.Server.OperationMode;
+import org.rhq.core.domain.cloud.StorageNode;
import org.rhq.core.domain.criteria.ServerCriteria;
+import org.rhq.core.domain.criteria.StorageNodeCriteria;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
import org.rhq.enterprise.server.test.AbstractEJB3Test;
@@ -546,4 +548,67 @@ public class TopologyManagerBeanTest extends AbstractEJB3Test {
}
});
}
+
+
+ @Test(groups = "integration.ejb3")
+ public void testStorageNodeCriteriaFinder() throws Exception {
+
+ final int storageNodeCount = 42;
+ executeInTransaction(new TransactionCallback() {
+
+ public void execute() throws Exception {
+ // verify that all storage nodes objects are actually parsed.
+ final Set<String> nodeAddresses = new
HashSet<String>(storageNodeCount);
+
+ final String prefix = "storage_node";
+ StorageNode lastOne = null, firstOne = null;
+ for (int i = 0; i < storageNodeCount; i++) {
+ String address = prefix + String.format(" %03d", i + 1) +
".domain.com";
+ StorageNode node = new StorageNode();
+ node.setAddress(address);
+ node.setOperationMode(StorageNode.OperationMode.NORMAL);
+ node.setJmxPort(7299 + i);
+ node.setCqlPort(9142 + i);
+ if(i == 0) {
+ firstOne = node;
+ } else if (i == storageNodeCount - 1) {
+ lastOne = node;
+ }
+
+ em.persist(node);
+ nodeAddresses.add(address);
+ em.flush();
+ }
+ em.flush();
+
+ assertTrue("The number of created storage nodes should be " +
storageNodeCount + ". Was: " + nodeAddresses.size(),
+ storageNodeCount == nodeAddresses.size());
+
+ StorageNodeCriteria criteria = new StorageNodeCriteria();
+ criteria.addFilterAddress(prefix);
+ criteria.addSortAddress(PageOrdering.DESC); // use DESC just to make sure
sorting on name is different than insert order
+ PageList<StorageNode> list =
topologyManager.findStorageNodesByCriteria(overlord, criteria);
+
+ assertTrue("The number of found storage nodes should be " +
storageNodeCount + ". Was: " + list.size(),
+ storageNodeCount == list.size());
+
+ assertTrue("The first storage node [" + firstOne + "]
should be same as the last one in the list [ " + list.get(list.size() - 1) +
"]",
+ firstOne.equals(list.get(list.size() - 1)));
+
+ assertTrue("The last storage node [" + lastOne + "] should
be same as the first one in the list [ " + list.get(0) + "]",
+ lastOne.equals(list.get(0)));
+
+ String prevAddress = null;
+ for (StorageNode s : list) {
+ assert null == prevAddress || s.getAddress().compareTo(prevAddress)
< 0 : "Results should be sorted by address DESC, something is out of order";
+ prevAddress = s.getAddress();
+ nodeAddresses.remove(s.getAddress());
+ }
+
+ // test that entire list was parsed
+ assertTrue("Expected resourceNames to be empty. Still " +
nodeAddresses.size() + " name(s).",
+ nodeAddresses.size() == 0);
+ }
+ });
+ }
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/TopologyManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/TopologyManagerBean.java
index 7926504..faa44d7 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/TopologyManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/TopologyManagerBean.java
@@ -35,8 +35,10 @@ import org.rhq.core.domain.authz.Permission;
import org.rhq.core.domain.cloud.FailoverListDetails;
import org.rhq.core.domain.cloud.PartitionEventType;
import org.rhq.core.domain.cloud.Server;
+import org.rhq.core.domain.cloud.StorageNode;
import org.rhq.core.domain.cloud.composite.ServerWithAgentCountComposite;
import org.rhq.core.domain.criteria.ServerCriteria;
+import org.rhq.core.domain.criteria.StorageNodeCriteria;
import org.rhq.core.domain.resource.Agent;
import org.rhq.core.domain.server.PersistenceUtility;
import org.rhq.core.domain.util.PageControl;
@@ -313,4 +315,11 @@ public class TopologyManagerBean implements TopologyManagerLocal {
CriteriaQueryRunner<Server> runner = new
CriteriaQueryRunner<Server>(criteria, generator, entityManager);
return runner.execute();
}
+
+ @RequiredPermission(Permission.MANAGE_SETTINGS)
+ public PageList<StorageNode> findStorageNodesByCriteria(Subject subject,
StorageNodeCriteria criteria) {
+ CriteriaQueryGenerator generator = new CriteriaQueryGenerator(subject,
criteria);
+ CriteriaQueryRunner<StorageNode> runner = new
CriteriaQueryRunner<StorageNode>(criteria, generator, entityManager);
+ return runner.execute();
+ }
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/TopologyManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/TopologyManagerLocal.java
index f098e54..3d66d30 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/TopologyManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/TopologyManagerLocal.java
@@ -25,8 +25,10 @@ import javax.ejb.Local;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.cloud.FailoverListDetails;
import org.rhq.core.domain.cloud.Server;
+import org.rhq.core.domain.cloud.StorageNode;
import org.rhq.core.domain.cloud.composite.ServerWithAgentCountComposite;
import org.rhq.core.domain.criteria.ServerCriteria;
+import org.rhq.core.domain.criteria.StorageNodeCriteria;
import org.rhq.core.domain.resource.Agent;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
@@ -152,4 +154,6 @@ public interface TopologyManagerLocal {
* @return list of servers
*/
PageList<Server> findServersByCriteria(Subject subject, ServerCriteria
criteria);
+
+ PageList<StorageNode> findStorageNodesByCriteria(Subject subject,
StorageNodeCriteria criteria);
}
Show replies by date