@Override public void run() { // log.info("START"); try { while (execute) { int next = random.nextInt(nodesMaxIndex); NodeData rndNode = parentNodes[next]; if (random.nextBoolean()) { // put single item if (random.nextBoolean()) { // node cache.put( new TransientNodeData( QPath.makeChildPath( rndNode.getQPath(), InternalQName.parse("[]childNode-" + next)), IdGenerator.generate(), 1, Constants.NT_UNSTRUCTURED, new InternalQName[0], 1, IdGenerator.generate(), rndNode.getACL())); } else { TransientPropertyData pd = new TransientPropertyData( QPath.makeChildPath( rndNode.getQPath(), InternalQName.parse("[]property-" + next)), IdGenerator.generate(), 1, PropertyType.STRING, rndNode.getIdentifier(), false, new TransientValueData("prop data")); cache.put(pd); } itemsProcessed++; } else { // put list of childs if (random.nextBoolean()) { // nodes List<NodeData> cn = createNodesData(rndNode, 100); cache.addChildNodes(rndNode, cn); itemsProcessed += cn.size(); } else { // properties w/o value List<PropertyData> cp = createPropertiesData(rndNode, 100); cache.addChildProperties(rndNode, cp); itemsProcessed += cp.size(); } } Thread.sleep(putTimeout); } } catch (Exception e) { log.error(getName() + " " + e, e); } // log.info("FINISH"); }
/** * Creates new changes log with rootPath and its descendants of this one and removes those * entries. * * @param rootPath * @return ItemDataChangesLog */ public PlainChangesLog pushLog(QPath rootPath) { // session instance is always present in SessionChangesLog PlainChangesLog cLog = new PlainChangesLogImpl(getDescendantsChanges(rootPath), session); if (rootPath.equals(Constants.ROOT_PATH)) { clear(); } else { remove(rootPath); } return cLog; }
/** * properties w/o value. * * @param parent * @param count * @return * @throws Exception */ private List<PropertyData> createPropertiesData(NodeData parent, int count) throws Exception { List<PropertyData> props = new ArrayList<PropertyData>(); for (int i = 1; i <= count; i++) { TransientPropertyData pd = new TransientPropertyData( QPath.makeChildPath(parent.getQPath(), InternalQName.parse("[]property-" + i)), IdGenerator.generate(), 1, PropertyType.STRING, parent.getIdentifier(), false, new TransientValueData("prop data")); props.add(pd); } return props; }
private List<NodeData> createNodesData(NodeData parent, int count) throws Exception { List<NodeData> nodes = new ArrayList<NodeData>(); for (int i = 1; i <= count; i++) { nodes.add( new TransientNodeData( QPath.makeChildPath(parent.getQPath(), InternalQName.parse("[]node" + i)), IdGenerator.generate(), 1, Constants.NT_UNSTRUCTURED, new InternalQName[0], 1, IdGenerator.generate(), parent.getACL())); } return nodes; }