Skip to content

Commit 7b7b64d

Browse files
authored
Merge pull request #8 from xxcxy/fix-unit-tests
update auto-pilot to dev branch
2 parents 92680f8 + ddc3e6b commit 7b7b64d

File tree

12 files changed

+120
-71
lines changed

12 files changed

+120
-71
lines changed

auto-pilot/src/main/java/com/topcoder/kafka/messaging/KafkaMessageProducer.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import java.io.File;
44
import java.io.FileInputStream;
5+
import java.io.PrintWriter;
6+
import java.io.StringWriter;
57
import java.text.DateFormat;
68
import java.text.SimpleDateFormat;
79
import java.util.Date;
@@ -81,6 +83,8 @@ public class KafkaMessageProducer {
8183
*/
8284
public int tokenExpirationTime;
8385

86+
public String authProxyServerUrl = "";
87+
8488
/**
8589
* <p>
8690
* Represents the default log name to be used for auditing. Referenced in
@@ -186,7 +190,10 @@ public void postRequestUsingGson(Object payload) {
186190

187191
getLog().log(Level.INFO, response);
188192
} catch(Exception e) {
193+
StringWriter sw = new StringWriter();
194+
e.printStackTrace(new PrintWriter(sw));
189195
getLog().log(Level.ERROR, "Exception when sending message to Kakfa Bus : " + e.getMessage());
196+
getLog().log(Level.ERROR, "details: " + sw.toString());
190197
} catch(Throwable e) {
191198
getLog().log(Level.ERROR, "Throwable when sending message to Kakfa Bus : " + e.getMessage());
192199
}
@@ -197,8 +204,8 @@ protected Log getLog() {
197204
}
198205

199206
public String getM2MToken() throws Exception {
200-
JWTTokenGenerator generator = JWTTokenGenerator.getInstance(this.clientId,
201-
this.clientSecret, this.authAudience,this.authDomain,this.tokenExpirationTime);
207+
JWTTokenGenerator generator = JWTTokenGenerator.getInstance(this.clientId, this.clientSecret, this.authAudience,
208+
this.authDomain,this.tokenExpirationTime, this.authProxyServerUrl);
202209
return generator.getMachineToken();
203210
}
204211

auto-pilot/src/main/java/com/topcoder/management/phase/autopilot/AutoPilot.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ public AutoPilotResult[] advanceProjects(long[] projectId, String operator) thro
322322
// Check if the project is processing by another thread
323323
synchronized (processingProjectIds) {
324324
if (processingProjectIds.contains(longProjectId)) {
325+
log.log(Level.INFO, new LogMessage(null, operator, "Stopped in synchronized for projectId=" + longProjectId));
325326
continue;
326327
} else {
327328
processingProjectIds.add(longProjectId);
@@ -362,7 +363,7 @@ public AutoPilotResult[] advanceProjects(long[] projectId, String operator) thro
362363
* @throws PhaseOperationException if any error occurs while ending/starting a phase
363364
*/
364365
public AutoPilotResult advanceProject(long projectId, String operator) throws PhaseOperationException {
365-
log.log(Level.DEBUG, new LogMessage(new Long(projectId), operator, "Checking project phases."));
366+
log.log(Level.INFO, new LogMessage(new Long(projectId), operator, "Checking project phases."));
366367
return projectPilot.advancePhases(projectId, operator);
367368
}
368369
/**

auto-pilot/src/main/java/com/topcoder/management/phase/autopilot/AutoPilotJob.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ public void run() {
341341
public AutoPilotResult[] execute() throws AutoPilotSourceException, PhaseOperationException {
342342
log.log(Level.INFO, new LogMessage(null, getOperator(), "AutoPilot job iteration."));
343343
AutoPilotResult[] ret = autoPilot.advanceProjects(getOperator());
344-
log.log(Level.DEBUG, new LogMessage(null, getOperator(), "AutoPilot job iteration - end."));
344+
log.log(Level.INFO, new LogMessage(null, getOperator(), "AutoPilot job iteration - end."));
345345
return ret;
346346
}
347347

auto-pilot/src/main/java/com/topcoder/management/phase/autopilot/impl/DefaultProjectPilot.java

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import com.topcoder.management.phase.autopilot.ConfigurationException;
2323
import com.topcoder.management.phase.autopilot.PhaseOperationException;
2424
import com.topcoder.management.phase.autopilot.ProjectPilot;
25+
import com.topcoder.management.project.PersistenceException;
26+
import com.topcoder.management.project.ProjectManager;
2527
import com.topcoder.project.phases.Dependency;
2628
import com.topcoder.project.phases.Phase;
2729
import com.topcoder.project.phases.Project;
@@ -86,6 +88,7 @@ public class DefaultProjectPilot implements ProjectPilot {
8688
*/
8789
private final PhaseManager phaseManager;
8890

91+
private final ProjectManager projectManager;
8992
/**
9093
* <p>
9194
* Represents the log used to do auditing whenever a phase is started/ended. The audit log
@@ -138,7 +141,7 @@ public class DefaultProjectPilot implements ProjectPilot {
138141
*/
139142
public DefaultProjectPilot() throws ConfigurationException {
140143
this(DefaultProjectPilot.class.getName(), PhaseManager.class.getName(),
141-
DEFAULT_SCHEDULED_STATUS_NAME, DEFAULT_OPEN_STATUS_NAME, DEFAULT_LOG_NAME);
144+
DEFAULT_SCHEDULED_STATUS_NAME, DEFAULT_OPEN_STATUS_NAME, DEFAULT_LOG_NAME, ProjectManager.class.getName());
142145
}
143146

144147
/**
@@ -160,17 +163,23 @@ public DefaultProjectPilot() throws ConfigurationException {
160163
* phase manager instance or the log
161164
*/
162165
public DefaultProjectPilot(String namespace, String phaseManagerKey,
163-
String scheduledStatusName, String openStatusName, String logName)
166+
String scheduledStatusName, String openStatusName, String logName, String projectManagerkey)
164167
throws ConfigurationException {
165168
// Check arguments.
166169
checkArguments(namespace, phaseManagerKey, scheduledStatusName, openStatusName, logName);
167170

168171
// Create object factory to create phaseManager.
169172
ObjectFactory of;
170173
Object objPhaseManager;
174+
Object objProjectManager;
171175
try {
172176
of = new ObjectFactory(new ConfigManagerSpecificationFactory(namespace));
173177

178+
objProjectManager = of.createObject(projectManagerkey);
179+
if (!ProjectManager.class.isInstance(objProjectManager)) {
180+
throw new ConfigurationException(
181+
"fail to create ProjectManager object cause of bad type:" + objProjectManager);
182+
}
174183
objPhaseManager = of.createObject(phaseManagerKey);
175184
if (!PhaseManager.class.isInstance(objPhaseManager)) {
176185
throw new ConfigurationException(
@@ -190,6 +199,7 @@ public DefaultProjectPilot(String namespace, String phaseManagerKey,
190199
// Assign to fields.
191200
this.log = LogManager.getLog(logName);
192201
this.phaseManager = (PhaseManager) objPhaseManager;
202+
this.projectManager = (ProjectManager) objProjectManager;
193203
this.scheduledStatusName = scheduledStatusName;
194204
this.openStatusName = openStatusName;
195205
}
@@ -207,8 +217,11 @@ public DefaultProjectPilot(String namespace, String phaseManagerKey,
207217
* parameters are empty (trimmed) string
208218
*/
209219
public DefaultProjectPilot(PhaseManager phaseManager, String scheduledStatusName,
210-
String openStatusName, Log log) {
220+
String openStatusName, Log log, ProjectManager projectManager) {
211221
// Check arguments.
222+
if (null == projectManager) {
223+
throw new IllegalArgumentException("projectManager cannot be null");
224+
}
212225
if (null == phaseManager) {
213226
throw new IllegalArgumentException("phaseManager cannot be null");
214227
}
@@ -234,6 +247,7 @@ public DefaultProjectPilot(PhaseManager phaseManager, String scheduledStatusName
234247
throw new IllegalArgumentException("log cannot be null");
235248
}
236249

250+
this.projectManager = projectManager;
237251
this.phaseManager = phaseManager;
238252
this.scheduledStatusName = scheduledStatusName;
239253
this.openStatusName = openStatusName;
@@ -287,6 +301,7 @@ private void checkArguments(String namespace, String phaseManagerKey,
287301
}
288302
}
289303

304+
protected ProjectManager getProjectManager() { return this.projectManager; }
290305
/**
291306
* <p>
292307
* Return the phase manager instance used by this class.
@@ -466,7 +481,14 @@ protected int[] doPhaseOperation(Phase phase, String operator) throws PhaseOpera
466481

467482
phaseManager.end(phase, operator);
468483
count[0]++;
469-
doAudit(phase, true, operator);
484+
com.topcoder.management.project.Project project;
485+
try {
486+
project = projectManager.getProject(phase.getProject().getId());
487+
} catch (PersistenceException e) {
488+
throw new PhaseOperationException(phase.getProject().getId(), phase, "Failed to get project status");
489+
}
490+
491+
doAudit(phase, true, operator, project.getProjectStatus().getName());
470492
}
471493
} catch (PhaseManagementException e) {
472494
getLog().log(Level.ERROR, "fail to end the phase cause of phase management exception");
@@ -508,6 +530,11 @@ protected int[] doPhaseOperation(Phase phase, String operator) throws PhaseOpera
508530
* Badal : added sample json message for testing on dev
509531
*/
510532
protected void doAudit(Phase phase, boolean isEnd, String operator)
533+
throws PhaseOperationException {
534+
doAudit(phase, isEnd, operator, null);
535+
}
536+
537+
protected void doAudit(Phase phase, boolean isEnd, String operator, String projectStatus)
511538
throws PhaseOperationException {
512539
getLog().log(
513540
Level.INFO,
@@ -518,14 +545,15 @@ protected void doAudit(Phase phase, boolean isEnd, String operator)
518545
+ phase.getId()
519546
+ " - phase type "
520547
+ ((null == phase.getPhaseType()) ? "Null Phase Type" : phase.getPhaseType()
521-
.getName()) + " - " + (isEnd ? "END" : "START") + " - operator " + operator);
548+
.getName()) + " - " + (isEnd ? "END" : "START") + " - operator " + operator
549+
+ " - projectStatus " + projectStatus);
522550

523551
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
524552
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
525553
MessageFormat message = new MessageFormat(dateFormat.format(new Date()),
526554
phase.getProject().getId(), phase.getId(),
527555
(null == phase.getPhaseType()) ? "Null Phase Type" : phase.getPhaseType().getName(),
528-
isEnd ? "END" : "START", operator);
556+
isEnd ? "END" : "START", operator, projectStatus);
529557

530558
getLog().log(Level.INFO, "JSON_MESSAGE ::: WILL SEND");
531559

auto-pilot/src/main/java/com/topcoder/management/phase/autopilot/impl/MessageFormat.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,18 @@ public class MessageFormat {
88
private String phaseTypeName;
99
private String state;
1010
private String operator;
11+
private String projectStatus;
1112

12-
public MessageFormat(String date, long projectId, long phaseId, String phaseTypeName, String state, String operator) {
13+
public MessageFormat(String date, long projectId, long phaseId, String phaseTypeName, String state, String operator,
14+
String projectStatus) {
1315
super();
1416
this.date = date;
1517
this.projectId = projectId;
1618
this.phaseId = phaseId;
1719
this.phaseTypeName = phaseTypeName;
1820
this.state = state;
1921
this.operator = operator;
22+
this.projectStatus = projectStatus;
2023
}
2124

2225
public String getDate() {
@@ -57,5 +60,12 @@ public String getOperator() {
5760
public void setOperator(String operator) {
5861
this.operator = operator;
5962
}
60-
63+
64+
public String getProjectStatus() {
65+
return projectStatus;
66+
}
67+
68+
public void setProjectStatus(String projectStatus) {
69+
this.projectStatus = projectStatus;
70+
}
6171
}

auto-pilot/src/test/java/com/topcoder/management/phase/autopilot/AutoPilotTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ private void createAutoPilot2() throws Exception {
150150
"project_manager"), "Active", "Autopilot Option", "On", LogManager.getLog());
151151
ProjectPilot projectPilot = new DefaultProjectPilot(new DefaultPhaseManager2("pm2"),
152152
DefaultProjectPilot.DEFAULT_SCHEDULED_STATUS_NAME,
153-
DefaultProjectPilot.DEFAULT_OPEN_STATUS_NAME, LogManager.getLog("ProjetPilot"));
153+
DefaultProjectPilot.DEFAULT_OPEN_STATUS_NAME, LogManager.getLog("ProjetPilot"), null);
154154
autoPilot = new AutoPilot(autoPilotSource, projectPilot, LogManager.getLog());
155155
}
156156

auto-pilot/src/test/java/com/topcoder/management/phase/autopilot/accuracytests/impl/DefaultProjectPilotAccuracyTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,13 @@ protected void setUp() throws Exception {
118118
TestDataFactory.PHASE_MANAGER_CONFIG_PROPERTY,
119119
TestDataFactory.SCHEDULED_PHASE_STATUS,
120120
TestDataFactory.OPEN_PHASE_STATUS,
121-
TestDataFactory.LOG_NAME);
121+
TestDataFactory.LOG_NAME,
122+
TestDataFactory.PROJECT_MANAGER_CONFIG_PROPERTY);
122123
this.testedInstances[2] = new DefaultProjectPilotSubclass(TestDataFactory.getPhaseManager(),
123124
TestDataFactory.SCHEDULED_PHASE_STATUS,
124125
TestDataFactory.OPEN_PHASE_STATUS,
125-
TestDataFactory.getLog());
126+
TestDataFactory.getLog(),
127+
TestDataFactory.getProjectManager());
126128
}
127129

128130
/**

auto-pilot/src/test/java/com/topcoder/management/phase/autopilot/accuracytests/impl/DefaultProjectPilotSubclass.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.topcoder.management.phase.autopilot.PhaseOperationException;
1111
import com.topcoder.management.phase.autopilot.accuracytests.TestDataFactory;
1212
import com.topcoder.management.phase.autopilot.impl.DefaultProjectPilot;
13+
import com.topcoder.management.project.ProjectManager;
1314
import com.topcoder.project.phases.Phase;
1415
import com.topcoder.util.log.Log;
1516
import com.topcoder.util.log.LogManager;
@@ -50,8 +51,8 @@ public DefaultProjectPilotSubclass() throws ConfigurationException {
5051
* or the logger
5152
*/
5253
public DefaultProjectPilotSubclass(String namespace, String phaseManagerKey, String scheduledStatusName,
53-
String openStatusName, String logName) throws ConfigurationException {
54-
super(namespace, phaseManagerKey, scheduledStatusName, openStatusName, logName);
54+
String openStatusName, String logName, String projectManager) throws ConfigurationException {
55+
super(namespace, phaseManagerKey, scheduledStatusName, openStatusName, logName, projectManager);
5556
}
5657

5758
/**
@@ -65,8 +66,8 @@ public DefaultProjectPilotSubclass(String namespace, String phaseManagerKey, Str
6566
* (trimmed) string
6667
*/
6768
public DefaultProjectPilotSubclass(PhaseManager phaseManager, String scheduledStatusName, String openStatusName,
68-
Log logger) {
69-
super(phaseManager, scheduledStatusName, openStatusName, logger);
69+
Log logger, ProjectManager projectManager) {
70+
super(phaseManager, scheduledStatusName, openStatusName, logger, projectManager);
7071
}
7172

7273
/**

0 commit comments

Comments
 (0)