mirror of
https://github.com/Alfresco/SearchServices.git
synced 2026-09-16 18:12:56 +00:00
Search-77, refactor test to use swith and hardend the tests
This commit is contained in:
+12
-2
@@ -69,6 +69,7 @@ public abstract class AbstractTracker implements Tracker
|
||||
protected boolean transformContent;
|
||||
protected String shardTemplate;
|
||||
protected volatile boolean rollback;
|
||||
protected final Type type;
|
||||
|
||||
|
||||
/*
|
||||
@@ -82,11 +83,12 @@ public abstract class AbstractTracker implements Tracker
|
||||
/**
|
||||
* Default constructor, strictly for testing.
|
||||
*/
|
||||
protected AbstractTracker()
|
||||
protected AbstractTracker(Type type)
|
||||
{
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
protected AbstractTracker(Properties p, SOLRAPIClient client, String coreName, InformationServer informationServer)
|
||||
protected AbstractTracker(Properties p, SOLRAPIClient client, String coreName, InformationServer informationServer,Type type)
|
||||
{
|
||||
this.props = p;
|
||||
this.client = client;
|
||||
@@ -110,6 +112,9 @@ public abstract class AbstractTracker implements Tracker
|
||||
this.trackerStats = this.infoSrv.getTrackerStats();
|
||||
|
||||
alfrescoVersion = p.getProperty("alfresco.version", "5.0.0");
|
||||
|
||||
this.type = type;
|
||||
|
||||
log.info("Solr built for Alfresco version: " + alfrescoVersion);
|
||||
}
|
||||
|
||||
@@ -310,6 +315,11 @@ public abstract class AbstractTracker implements Tracker
|
||||
{
|
||||
return props;
|
||||
}
|
||||
|
||||
public Type getType()
|
||||
{
|
||||
return type;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -75,13 +75,13 @@ public class AclTracker extends AbstractTracker
|
||||
*/
|
||||
AclTracker()
|
||||
{
|
||||
super();
|
||||
super(Tracker.Type.ACL);
|
||||
}
|
||||
|
||||
public AclTracker(Properties p, SOLRAPIClient client,
|
||||
String coreName, InformationServer informationServer)
|
||||
{
|
||||
super(p, client, coreName, informationServer);
|
||||
super(p, client, coreName, informationServer, Tracker.Type.ACL);
|
||||
changeSetAclsBatchSize = Integer.parseInt(p.getProperty("alfresco.changeSetAclsBatchSize", "100"));
|
||||
aclBatchSize = Integer.parseInt(p.getProperty("alfresco.aclBatchSize", "10"));
|
||||
shardMethod = p.getProperty("shard.method", SHARD_METHOD_DBID);
|
||||
|
||||
+11
-15
@@ -19,22 +19,18 @@
|
||||
package org.alfresco.solr.tracker;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.httpclient.AuthenticationException;
|
||||
import org.alfresco.repo.index.shard.ShardMethodEnum;
|
||||
import org.alfresco.repo.index.shard.ShardState;
|
||||
import org.alfresco.repo.index.shard.ShardStateBuilder;
|
||||
import org.alfresco.solr.AlfrescoSolrDataModel;
|
||||
import org.alfresco.solr.BoundedDeque;
|
||||
import org.alfresco.solr.InformationServer;
|
||||
import org.alfresco.solr.NodeReport;
|
||||
import org.alfresco.solr.TrackerState;
|
||||
import org.alfresco.solr.adapters.IOpenBitSet;
|
||||
import org.alfresco.solr.client.*;
|
||||
import org.alfresco.solr.client.Node.SolrApiNodeStatus;
|
||||
import org.alfresco.solr.client.NodeMetaData;
|
||||
import org.alfresco.solr.client.SOLRAPIClient;
|
||||
import org.alfresco.solr.client.Transaction;
|
||||
import org.apache.commons.codec.EncoderException;
|
||||
import org.json.JSONException;
|
||||
import org.slf4j.Logger;
|
||||
@@ -54,14 +50,14 @@ public class CascadeTracker extends AbstractTracker implements Tracker
|
||||
public CascadeTracker(Properties p, SOLRAPIClient client, String coreName,
|
||||
InformationServer informationServer)
|
||||
{
|
||||
super(p, client, coreName, informationServer);
|
||||
super(p, client, coreName, informationServer, Tracker.Type.Cascade);
|
||||
|
||||
threadHandler = new ThreadHandler(p, coreName, "CascadeTracker");
|
||||
}
|
||||
|
||||
CascadeTracker()
|
||||
{
|
||||
// Testing purposes only
|
||||
super(Tracker.Type.Cascade);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-4
@@ -21,9 +21,7 @@ package org.alfresco.solr.tracker;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.Semaphore;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import org.alfresco.solr.InformationServer;
|
||||
import org.alfresco.solr.client.SOLRAPIClient;
|
||||
@@ -53,7 +51,7 @@ public class CommitTracker extends AbstractTracker
|
||||
**/
|
||||
CommitTracker()
|
||||
{
|
||||
super();
|
||||
super(Tracker.Type.Commit);
|
||||
}
|
||||
|
||||
public CommitTracker(Properties p,
|
||||
@@ -62,7 +60,7 @@ public class CommitTracker extends AbstractTracker
|
||||
InformationServer informationServer,
|
||||
List<Tracker> trackers)
|
||||
{
|
||||
super(p, client, coreName, informationServer);
|
||||
super(p, client, coreName, informationServer, Tracker.Type.Commit);
|
||||
|
||||
//Set the trackers
|
||||
for(Tracker tracker : trackers) {
|
||||
|
||||
+2
-5
@@ -21,9 +21,6 @@
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
import java.util.WeakHashMap;
|
||||
import java.util.concurrent.Semaphore;
|
||||
|
||||
import org.alfresco.solr.AlfrescoSolrDataModel.TenantAclIdDbId;
|
||||
import org.alfresco.solr.InformationServer;
|
||||
@@ -48,7 +45,7 @@ public class ContentTracker extends AbstractTracker implements Tracker
|
||||
public ContentTracker(Properties p, SOLRAPIClient client, String coreName,
|
||||
InformationServer informationServer)
|
||||
{
|
||||
super(p, client, coreName, informationServer);
|
||||
super(p, client, coreName, informationServer, Tracker.Type.Content);
|
||||
contentReadBatchSize = Integer.parseInt(p.getProperty("alfresco.contentReadBatchSize", "100"));
|
||||
contentUpdateBatchSize = Integer.parseInt(p.getProperty("alfresco.contentUpdateBatchSize", "1000"));
|
||||
threadHandler = new ThreadHandler(p, coreName, "ContentTracker");
|
||||
@@ -56,7 +53,7 @@ public class ContentTracker extends AbstractTracker implements Tracker
|
||||
|
||||
ContentTracker()
|
||||
{
|
||||
// Testing purposes only
|
||||
super(Tracker.Type.Content);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+8
-4
@@ -19,7 +19,12 @@
|
||||
package org.alfresco.solr.tracker;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
@@ -62,7 +67,6 @@ public class MetadataTracker extends AbstractTracker implements Tracker
|
||||
private static final int DEFAULT_NODE_BATCH_SIZE = 10;
|
||||
private int transactionDocsBatchSize = DEFAULT_TRANSACTION_DOCS_BATCH_SIZE;
|
||||
private int nodeBatchSize = DEFAULT_NODE_BATCH_SIZE;
|
||||
private int maxTransactionDocumentIdCacheSize = 700000;
|
||||
private ConcurrentLinkedQueue<Long> transactionsToReindex = new ConcurrentLinkedQueue<Long>();
|
||||
private ConcurrentLinkedQueue<Long> transactionsToIndex = new ConcurrentLinkedQueue<Long>();
|
||||
private ConcurrentLinkedQueue<Long> transactionsToPurge = new ConcurrentLinkedQueue<Long>();
|
||||
@@ -76,7 +80,7 @@ public class MetadataTracker extends AbstractTracker implements Tracker
|
||||
public MetadataTracker(Properties p, SOLRAPIClient client, String coreName,
|
||||
InformationServer informationServer)
|
||||
{
|
||||
super(p, client, coreName, informationServer);
|
||||
super(p, client, coreName, informationServer, Tracker.Type.MetaData);
|
||||
//System.out.println("####### MetadatTracker() ########");
|
||||
transactionDocsBatchSize = Integer.parseInt(p.getProperty("alfresco.transactionDocsBatchSize", "100"));
|
||||
shardMethod = p.getProperty("shard.method", SHARD_METHOD_DBID);
|
||||
@@ -92,7 +96,7 @@ public class MetadataTracker extends AbstractTracker implements Tracker
|
||||
|
||||
MetadataTracker()
|
||||
{
|
||||
// Testing purposes only
|
||||
super(Tracker.Type.MetaData);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-7
@@ -32,11 +32,6 @@ import java.util.Properties;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||
|
||||
import javax.naming.Context;
|
||||
import javax.naming.InitialContext;
|
||||
import javax.naming.NamingException;
|
||||
import javax.naming.NoInitialContextException;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.httpclient.AuthenticationException;
|
||||
import org.alfresco.repo.dictionary.M2Model;
|
||||
@@ -108,7 +103,7 @@ public class ModelTracker extends AbstractTracker implements Tracker
|
||||
public ModelTracker(String solrHome, Properties p, SOLRAPIClient client, String coreName,
|
||||
InformationServer informationServer)
|
||||
{
|
||||
super(p, client, coreName, informationServer);
|
||||
super(p, client, coreName, informationServer, Tracker.Type.Model);
|
||||
String normalSolrHome = SolrResourceLoader.normalizeDir(solrHome);
|
||||
alfrescoModelDir = new File(ConfigUtil.locateProperty("solr.model.dir", normalSolrHome+"alfrescoModels"));
|
||||
log.info("Alfresco Model dir " + alfrescoModelDir);
|
||||
@@ -192,7 +187,7 @@ public class ModelTracker extends AbstractTracker implements Tracker
|
||||
*/
|
||||
ModelTracker()
|
||||
{
|
||||
// Testing purposes only
|
||||
super(Tracker.Type.Model);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+24
-15
@@ -73,7 +73,14 @@ public class SolrTrackerScheduler
|
||||
{
|
||||
log.error("Failed to schedule " + jobType + " Job.", e);
|
||||
}
|
||||
|
||||
/**
|
||||
* Schedules individual trackers based on the solrcore properties.
|
||||
*
|
||||
* @author Michael Suzuki
|
||||
* @param tracker
|
||||
* @param coreName
|
||||
* @param props
|
||||
*/
|
||||
public void schedule(Tracker tracker, String coreName, Properties props)
|
||||
{
|
||||
String jobName = this.getJobName(tracker, coreName);
|
||||
@@ -85,27 +92,29 @@ public class SolrTrackerScheduler
|
||||
try
|
||||
{
|
||||
String cron = null;
|
||||
if(tracker instanceof AclTracker)
|
||||
switch (tracker.getType())
|
||||
{
|
||||
case ACL:
|
||||
cron = props.getProperty("alfresco.acl.tracker.cron", DEFAULT_CRON);
|
||||
}
|
||||
if(tracker instanceof ContentTracker)
|
||||
{
|
||||
break;
|
||||
case Model:
|
||||
cron = props.getProperty("alfresco.model.tracker.cron", DEFAULT_CRON);
|
||||
break;
|
||||
case Content:
|
||||
cron = props.getProperty("alfresco.content.tracker.cron", DEFAULT_CRON);
|
||||
}
|
||||
if(tracker instanceof MetadataTracker)
|
||||
{
|
||||
break;
|
||||
case MetaData:
|
||||
cron = props.getProperty("alfresco.metadata.tracker.cron", DEFAULT_CRON);
|
||||
}
|
||||
if(tracker instanceof CascadeTracker)
|
||||
{
|
||||
break;
|
||||
case Cascade:
|
||||
cron = props.getProperty("alfresco.cascade.tracker.cron", DEFAULT_CRON);
|
||||
}
|
||||
if(tracker instanceof CommitTracker)
|
||||
{
|
||||
break;
|
||||
case Commit:
|
||||
cron = props.getProperty("alfresco.commit.tracker.cron", DEFAULT_CRON);
|
||||
break;
|
||||
default: props.getProperty(DEFAULT_CRON);
|
||||
break;
|
||||
}
|
||||
cron = cron == null ? DEFAULT_CRON : cron;
|
||||
trigger = new CronTrigger(jobName, SOLR_JOB_GROUP, cron);
|
||||
log.info("Scheduling job " + jobName);
|
||||
scheduler.scheduleJob(job, trigger);
|
||||
|
||||
@@ -48,4 +48,15 @@ public interface Tracker
|
||||
void invalidateState();
|
||||
|
||||
TrackerState getTrackerState();
|
||||
|
||||
Type getType();
|
||||
|
||||
enum Type{
|
||||
Model,
|
||||
Content,
|
||||
ACL,
|
||||
Cascade,
|
||||
Commit,
|
||||
MetaData
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -64,7 +64,7 @@ alfresco.content.tracker.cron=0/15 * * * * ? *
|
||||
alfresco.metadata.tracker.cron=0/15 * * * * ? *
|
||||
alfresco.cascade.tracker.cron=0/15 * * * * ? *
|
||||
alfresco.commit.tracker.cron=0/15 * * * * ? *
|
||||
|
||||
alfresco.model.tracker.cron=0/15 * * * * ? *
|
||||
alfresco.commitInterval=2000
|
||||
alfresco.newSearcherInterval=3000
|
||||
|
||||
|
||||
+7
@@ -27,6 +27,7 @@ import java.util.Properties;
|
||||
import org.alfresco.solr.AlfrescoSolrDataModel.TenantAclIdDbId;
|
||||
import org.alfresco.solr.SolrInformationServer;
|
||||
import org.alfresco.solr.client.SOLRAPIClient;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
@@ -133,4 +134,10 @@ public class ContentTrackerTest
|
||||
|
||||
order.verify(srv).getDocsWithUncleanContent(0 + READ_BATCH + READ_BATCH, READ_BATCH);
|
||||
}
|
||||
@Test
|
||||
public void typeCheck()
|
||||
{
|
||||
Assert.assertTrue(contentTracker.getType().equals(Tracker.Type.Content));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+49
-29
@@ -33,7 +33,10 @@ import static org.mockito.Mockito.when;
|
||||
import java.util.Arrays;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.alfresco.service.cmr.repository.StoreRef;
|
||||
import org.alfresco.solr.AlfrescoCoreAdminHandler;
|
||||
import org.alfresco.solr.InformationServer;
|
||||
import org.alfresco.solr.client.SOLRAPIClient;
|
||||
import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
@@ -53,29 +56,33 @@ public class SolrTrackerSchedulerTest
|
||||
{
|
||||
@Mock
|
||||
private AlfrescoCoreAdminHandler adminHandler;
|
||||
@Mock
|
||||
private ModelTracker modelTracker;
|
||||
@Mock
|
||||
private ContentTracker contentTracker;
|
||||
@Mock
|
||||
private MetadataTracker metadataTracker;
|
||||
@Mock
|
||||
private AclTracker aclTracker;
|
||||
@Mock
|
||||
private CascadeTracker cascadeTracker;
|
||||
@Mock
|
||||
private CascadeTracker cascadeTrackerScheduled;
|
||||
|
||||
private SolrTrackerScheduler trackerScheduler;
|
||||
private String CORE_NAME = "coreName";
|
||||
private Scheduler spiedQuartzScheduler;
|
||||
|
||||
@Mock
|
||||
SOLRAPIClient client;
|
||||
String coreName = "alfresco";
|
||||
@Mock
|
||||
InformationServer informationServer;
|
||||
Properties props;
|
||||
@Before
|
||||
public void setUp() throws Exception
|
||||
{
|
||||
this.trackerScheduler = new SolrTrackerScheduler(adminHandler);
|
||||
this.spiedQuartzScheduler = spy(this.trackerScheduler.scheduler);
|
||||
this.trackerScheduler.scheduler = spiedQuartzScheduler;
|
||||
props = new Properties();
|
||||
props.put("alfresco.stores", "workspace://SpacesStore");
|
||||
props.put("alfresco.batch.count", "5000");
|
||||
props.put("alfresco.maxLiveSearchers", "2");
|
||||
props.put("enable.slave", "false");
|
||||
props.put("enable.master", "true");
|
||||
props.put("shard.count", "1");
|
||||
props.put("shard.instance", "0");
|
||||
props.put("shard.method", "SHARD_METHOD_DBID");
|
||||
props.put("alfresco.template", "");
|
||||
props.put("alfresco.index.transformContent", "true");
|
||||
props.put("alfresco.version", "5.0.0");
|
||||
}
|
||||
|
||||
@After
|
||||
@@ -91,8 +98,8 @@ public class SolrTrackerSchedulerTest
|
||||
public void testAclSchedule() throws SchedulerException
|
||||
{
|
||||
String exp = "0/12 * * * * ? *";
|
||||
Properties props = mock(Properties.class);
|
||||
when(props.getProperty("alfresco.acl.tracker.cron", "0/15 * * * * ? *")).thenReturn(exp);
|
||||
props.put("alfresco.acl.tracker.cron", exp);
|
||||
AclTracker aclTracker = new AclTracker(props, client, coreName, informationServer);
|
||||
this.trackerScheduler.schedule(aclTracker, CORE_NAME, props);
|
||||
verify(spiedQuartzScheduler).scheduleJob(any(JobDetail.class), any(Trigger.class));
|
||||
checkCronExpression(exp);
|
||||
@@ -100,15 +107,14 @@ public class SolrTrackerSchedulerTest
|
||||
@Test
|
||||
public void testContentTrackerSchedule() throws SchedulerException
|
||||
{
|
||||
Properties props = mock(Properties.class);
|
||||
String exp = "0/5 * * * * ? *";
|
||||
when(props.getProperty("alfresco.content.tracker.cron", "0/15 * * * * ? *")).thenReturn(exp);
|
||||
props.put("alfresco.content.tracker.cron", exp);
|
||||
ContentTracker contentTracker = new ContentTracker(props, client, coreName, informationServer);
|
||||
this.trackerScheduler.schedule(contentTracker, CORE_NAME, props);
|
||||
verify(spiedQuartzScheduler).scheduleJob(any(JobDetail.class), any(Trigger.class));
|
||||
//loop all jobs by groupname
|
||||
checkCronExpression(exp);
|
||||
|
||||
}
|
||||
|
||||
private void checkCronExpression(String exp) throws SchedulerException
|
||||
{
|
||||
for (String jobName : this.trackerScheduler.scheduler.getJobNames(SolrTrackerScheduler.SOLR_JOB_GROUP))
|
||||
@@ -123,8 +129,8 @@ public class SolrTrackerSchedulerTest
|
||||
public void testMetaDataTrackerSchedule() throws SchedulerException
|
||||
{
|
||||
String exp = "0/4 * * * * ? *";
|
||||
Properties props = mock(Properties.class);
|
||||
when(props.getProperty("alfresco.metadata.tracker.cron", "0/15 * * * * ? *")).thenReturn(exp);
|
||||
props.put("alfresco.metadata.tracker.cron", exp);
|
||||
MetadataTracker metadataTracker = new MetadataTracker(props, client, exp, informationServer);
|
||||
this.trackerScheduler.schedule(metadataTracker, CORE_NAME, props);
|
||||
verify(spiedQuartzScheduler).scheduleJob(any(JobDetail.class), any(Trigger.class));
|
||||
checkCronExpression(exp);
|
||||
@@ -133,8 +139,8 @@ public class SolrTrackerSchedulerTest
|
||||
public void testSchedule() throws SchedulerException
|
||||
{
|
||||
String exp = "0/1 * * * * ? *";
|
||||
Properties props = mock(Properties.class);
|
||||
when(props.getProperty("alfresco.cascade.tracker.cron", "0/15 * * * * ? *")).thenReturn(exp);
|
||||
props.put("alfresco.cascade.tracker.cron",exp);
|
||||
CascadeTracker cascadeTracker = new CascadeTracker(props, client, exp, informationServer);
|
||||
this.trackerScheduler.schedule(cascadeTracker, CORE_NAME, props);
|
||||
verify(spiedQuartzScheduler).scheduleJob(any(JobDetail.class), any(Trigger.class));
|
||||
checkCronExpression(exp);
|
||||
@@ -149,6 +155,9 @@ public class SolrTrackerSchedulerTest
|
||||
@Test
|
||||
public void testDeleteTrackerJobs() throws SchedulerException
|
||||
{
|
||||
ContentTracker contentTracker = new ContentTracker();
|
||||
MetadataTracker metadataTracker = new MetadataTracker();
|
||||
AclTracker aclTracker = new AclTracker();
|
||||
this.trackerScheduler.deleteTrackerJobs(CORE_NAME,
|
||||
Arrays.asList(new Tracker[] { contentTracker, metadataTracker, aclTracker }));
|
||||
verify(spiedQuartzScheduler, times(3)).deleteJob(anyString(), eq(SolrTrackerScheduler.SOLR_JOB_GROUP));
|
||||
@@ -157,6 +166,7 @@ public class SolrTrackerSchedulerTest
|
||||
@Test
|
||||
public void testDeleteTrackerJob() throws SchedulerException
|
||||
{
|
||||
ModelTracker modelTracker = new ModelTracker();
|
||||
this.trackerScheduler.deleteTrackerJob(CORE_NAME, modelTracker);
|
||||
verify(spiedQuartzScheduler).deleteJob(anyString(), eq(SolrTrackerScheduler.SOLR_JOB_GROUP));
|
||||
}
|
||||
@@ -164,16 +174,16 @@ public class SolrTrackerSchedulerTest
|
||||
@Test
|
||||
public void testDeleteTrackerInstanceJob() throws SchedulerException
|
||||
{
|
||||
Properties props = mock(Properties.class);
|
||||
when(props.getProperty("alfresco.cascade.tracker.cron", "0/15 * * * * ? *")).thenReturn("0/15 * * * * ? *");
|
||||
this.trackerScheduler.schedule(cascadeTrackerScheduled, CORE_NAME, props);
|
||||
CascadeTracker cascadeTracker = new CascadeTracker(props, client, coreName, informationServer);
|
||||
CascadeTracker cascadeTracker2 = new CascadeTracker(props, client, coreName, informationServer);
|
||||
this.trackerScheduler.schedule(cascadeTracker, CORE_NAME, props);
|
||||
|
||||
//Try deleting the same class but a different instance. It not possible.
|
||||
this.trackerScheduler.deleteJobForTrackerInstance(CORE_NAME, cascadeTracker);
|
||||
this.trackerScheduler.deleteJobForTrackerInstance(CORE_NAME, cascadeTracker2);
|
||||
verify(spiedQuartzScheduler, never()).deleteJob(anyString(), eq(SolrTrackerScheduler.SOLR_JOB_GROUP));
|
||||
|
||||
//No try deleting the exact instance of the tracker class
|
||||
this.trackerScheduler.deleteJobForTrackerInstance(CORE_NAME, cascadeTrackerScheduled);
|
||||
this.trackerScheduler.deleteJobForTrackerInstance(CORE_NAME, cascadeTracker);
|
||||
verify(spiedQuartzScheduler, times(1)).deleteJob(anyString(), eq(SolrTrackerScheduler.SOLR_JOB_GROUP));
|
||||
|
||||
}
|
||||
@@ -190,5 +200,15 @@ public class SolrTrackerSchedulerTest
|
||||
this.trackerScheduler.pauseAll();
|
||||
verify(this.spiedQuartzScheduler).pauseAll();
|
||||
}
|
||||
@Test
|
||||
public void testModeltTrackerSchedule() throws SchedulerException
|
||||
{
|
||||
String exp = "0/20 * * * * ? *";
|
||||
props.put("alfresco.model.tracker.cron", exp);
|
||||
ModelTracker modelTracker = new ModelTracker("alfresco", props, client, CORE_NAME, informationServer);
|
||||
this.trackerScheduler.schedule(modelTracker, CORE_NAME, props);
|
||||
verify(spiedQuartzScheduler).scheduleJob(any(JobDetail.class), any(Trigger.class));
|
||||
checkCronExpression(exp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user