Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

Commit f25b1e4

Browse files
#21 - Dont listen to submission update events any more
1 parent 1996385 commit f25b1e4

File tree

8 files changed

+5
-104
lines changed

8 files changed

+5
-104
lines changed

README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ The following parameters can be set in config files or in env variables:
2121
- KAFKA_GROUP_ID: consumer group id; default value: 'scorecard-processor'
2222
- REVIEW_TOPIC : Review topic, default value is 'submission.notification.score'
2323
- CREATE_SUBMISSION_TOPIC : create submission topic, default value is 'submission.notification.create'
24-
- UPDATE_SUBMISSION_TOPIC : update submission topic, default value is 'submission.notification.update'
2524
- SUBMISSION_API_URL: submission api url, default is 'https://api.topcoder-dev.com/v5'
2625
- CHALLENGE_API_URL: challenge API URL, default is 'https://api.topcoder-dev.com/v4/challenges'
2726
- SCORECARD_API_URL: scorecard API URL, default is 'http://localhost:4000/scorecards'
@@ -55,7 +54,6 @@ Configuration for the tests is at `config/test.js`, only add such new configurat
5554
- use another terminal, go to same directory, create the needed topics:
5655
`bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic submission.notification.score`
5756
`bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic submission.notification.create`
58-
`bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic submission.notification.update`
5957
`bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic avscan.action.scan`
6058
`bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic or.action.review`
6159
- verify that the topics are created:

Verification.md

Lines changed: 0 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -97,56 +97,6 @@ debug: Successfully processed message
9797
{"topic":"or.action.review","originator":"tc-scorecard-processor","timestamp":"2019-04-07T21:36:04.215Z","mime-type":"application/json","payload":{"resource":"submission","id":"104366f8-f46b-45db-a971-11bc69e6c8ff","type":"Contest Submission","url":"https://s3.amazonaws.com/topcoder-dev-submissions-dmz/30054740-8547899-SUBMISSION_ZIP-1554188341581.zip","memberId":8547899,"challengeId":30049360,"created":"2019-04-02T06:59:29.785Z","updated":"2019-04-02T06:59:29.785Z","createdBy":"TonyJ","updatedBy":"TonyJ","submissionPhaseId":764644,"fileType":"zip","isFileSubmission":false,"eventType":"CREATE"}}
9898
```
9999

100-
- start kafka-console-producer to write messages to `submission.notification.update` topic:
101-
`bin/kafka-console-producer.sh --broker-list localhost:9092 --topic submission.notification.update`
102-
- write message:
103-
`{ "topic": "submission.notification.update", "originator": "or-app", "timestamp": "2019-02-25T00:00:00", "mime-type": "application/json", "payload": { "resource": "submission", "id": "104366f8-f46b-45db-a971-11bc69e6c8ff", "type": "Contest Submission", "url": "https://s3.amazonaws.com/topcoder-dev-submissions-dmz/30054740-8547899-SUBMISSION_ZIP-1554188341581.zip", "memberId": 8547899, "challengeId": 30049360, "created": "2019-04-02T06:59:29.785Z", "updated": "2019-04-02T06:59:29.785Z", "createdBy": "TonyJ", "updatedBy": "TonyJ", "submissionPhaseId": 764644, "fileType": "zip", "isFileSubmission": false } }`
104-
- watch the app console, it should show logging of processing the message:
105-
```
106-
debug: Get M2M token
107-
debug: Get challenge details
108-
debug: Scorecard id: 30001610
109-
debug: Current phase: Registration
110-
debug: Get scorecard details
111-
debug: Post Kafka message for score system AV Scan: {
112-
"topic": "avscan.action.scan",
113-
"originator": "tc-scorecard-processor",
114-
"timestamp": "2019-04-07T21:41:52.713Z",
115-
"mime-type": "application/json",
116-
"payload": {
117-
"status": "unscanned",
118-
"submissionId": "104366f8-f46b-45db-a971-11bc69e6c8ff",
119-
"url": "https://s3.amazonaws.com/topcoder-dev-submissions-dmz/30054740-8547899-SUBMISSION_ZIP-1554188341581.zip",
120-
"fileName": "30054740-8547899-SUBMISSION_ZIP-1554188341581.zip"
121-
}
122-
}
123-
debug: Post Kafka message for score system OR: {
124-
"topic": "or.action.review",
125-
"originator": "tc-scorecard-processor",
126-
"timestamp": "2019-04-07T21:41:52.729Z",
127-
"mime-type": "application/json",
128-
"payload": {
129-
"resource": "submission",
130-
"id": "104366f8-f46b-45db-a971-11bc69e6c8ff",
131-
"type": "Contest Submission",
132-
"url": "https://s3.amazonaws.com/topcoder-dev-submissions-dmz/30054740-8547899-SUBMISSION_ZIP-1554188341581.zip",
133-
"memberId": 8547899,
134-
"challengeId": 30049360,
135-
"created": "2019-04-02T06:59:29.785Z",
136-
"updated": "2019-04-02T06:59:29.785Z",
137-
"createdBy": "TonyJ",
138-
"updatedBy": "TonyJ",
139-
"submissionPhaseId": 764644,
140-
"fileType": "zip",
141-
"isFileSubmission": false,
142-
"eventType": "UPDATE"
143-
}
144-
}
145-
debug: EXIT processSubmission
146-
debug: output arguments
147-
debug: Successfully processed message
148-
```
149-
150100
- the kafka-console-consumer listening to topic `avscan.action.scan` should show:
151101
```
152102
{"topic":"avscan.action.scan","originator":"tc-scorecard-processor","timestamp":"2019-04-07T21:41:52.713Z","mime-type":"application/json","payload":{"status":"unscanned","submissionId":"104366f8-f46b-45db-a971-11bc69e6c8ff","url":"https://s3.amazonaws.com/topcoder-dev-submissions-dmz/30054740-8547899-SUBMISSION_ZIP-1554188341581.zip","fileName":"30054740-8547899-SUBMISSION_ZIP-1554188341581.zip"}}
@@ -157,19 +107,6 @@ debug: Successfully processed message
157107
{"topic":"or.action.review","originator":"tc-scorecard-processor","timestamp":"2019-04-07T21:41:52.729Z","mime-type":"application/json","payload":{"resource":"submission","id":"104366f8-f46b-45db-a971-11bc69e6c8ff","type":"Contest Submission","url":"https://s3.amazonaws.com/topcoder-dev-submissions-dmz/30054740-8547899-SUBMISSION_ZIP-1554188341581.zip","memberId":8547899,"challengeId":30049360,"created":"2019-04-02T06:59:29.785Z","updated":"2019-04-02T06:59:29.785Z","createdBy":"TonyJ","updatedBy":"TonyJ","submissionPhaseId":764644,"fileType":"zip","isFileSubmission":false,"eventType":"UPDATE"}}
158108
```
159109

160-
- you may write invalid messages like below:
161-
`{ "topic": "submission.notification.update", "originator": "or-app", "timestamp": "invalid", "mime-type": "application/json", "payload": { "resource": "submission", "id": "104366f8-f46b-45db-a971-11bc69e6c8ff", "type": "Contest Submission", "url": "https://s3.amazonaws.com/topcoder-dev-submissions-dmz/30054740-8547899-SUBMISSION_ZIP-1554188341581.zip", "memberId": 8547899, "challengeId": 30049360, "created": "2019-04-02T06:59:29.785Z", "updated": "2019-04-02T06:59:29.785Z", "createdBy": "TonyJ", "updatedBy": "TonyJ", "submissionPhaseId": 764644, "fileType": "zip", "isFileSubmission": false } }`
162-
163-
`{ "topic": "submission.notification.update", "originator": "or-app", "timestamp": "2019-02-25T00:00:00", "mime-type": "application/json", "payload": { "resource": "other", "id": "104366f8-f46b-45db-a971-11bc69e6c8ff", "type": "Contest Submission", "url": "https://s3.amazonaws.com/topcoder-dev-submissions-dmz/30054740-8547899-SUBMISSION_ZIP-1554188341581.zip", "memberId": 8547899, "challengeId": 30049360, "created": "2019-04-02T06:59:29.785Z", "updated": "2019-04-02T06:59:29.785Z", "createdBy": "TonyJ", "updatedBy": "TonyJ", "submissionPhaseId": 764644, "fileType": "zip", "isFileSubmission": false } }`
164-
165-
`{ "topic": "submission.notification.update", "originator": "or-app", "timestamp": "2019-02-25T00:00:00", "mime-type": "application/json", "payload": { "resource": "submission", "memberId": 8547899, "challengeId": 30049360, "created": "2019-04-02T06:59:29.785Z", "updated": "2019-04-02T06:59:29.785Z", "createdBy": "TonyJ", "updatedBy": "TonyJ", "submissionPhaseId": 764644, "fileType": "zip", "isFileSubmission": false } }`
166-
167-
`[ { , abc`
168-
169-
- the app console will show proper error messages
170-
171-
172-
173110
## Unit test Coverage
174111

175112
129 passing (1s)

config/default.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ module.exports = {
1818
REVIEW_TOPIC: process.env.REVIEW_TOPIC || 'submission.notification.score',
1919
// Kafka topic related to create submission
2020
CREATE_SUBMISSION_TOPIC: process.env.CREATE_SUBMISSION_TOPIC || 'submission.notification.create',
21-
// Kafka topic related to update submission
22-
UPDATE_SUBMISSION_TOPIC: process.env.UPDATE_SUBMISSION_TOPIC || 'submission.notification.update',
2321

2422
SUBMISSION_API_URL: process.env.SUBMISSION_API_URL || 'https://api.topcoder-dev.com/v5',
2523

src/app.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ const dataHandler = (messageSet, topic, partition) => Promise.each(messageSet, a
4646
return (async () => {
4747
if (topic === config.REVIEW_TOPIC) {
4848
await ReviewProcessorService.processReview(messageJSON)
49-
} else if (topic === config.CREATE_SUBMISSION_TOPIC || topic === config.UPDATE_SUBMISSION_TOPIC) {
49+
} else if (topic === config.CREATE_SUBMISSION_TOPIC) {
5050
await SubmissionProcessorService.processSubmission(messageJSON)
5151
} else {
5252
throw new Error(`Invalid topic: ${topic}`)
@@ -76,7 +76,7 @@ function check () {
7676
}
7777

7878
if (consumer) {
79-
const topics = [config.REVIEW_TOPIC, config.CREATE_SUBMISSION_TOPIC, config.UPDATE_SUBMISSION_TOPIC]
79+
const topics = [config.REVIEW_TOPIC, config.CREATE_SUBMISSION_TOPIC]
8080

8181
consumer
8282
.init([{

test/common/testData.js

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -85,38 +85,6 @@ const testTopics = {
8585
isFileSubmission: false
8686
}
8787
}
88-
},
89-
'submission.notification.update': {
90-
operation: 'update',
91-
requiredFields: ['topic', 'originator', 'timestamp', 'mime-type',
92-
'payload.resource', 'payload.id', 'payload.url',
93-
'payload.legacyChallengeId'],
94-
integerFields: ['payload.legacyChallengeId'],
95-
stringFields: ['originator', 'mime-type', 'payload.resource', 'payload.id',
96-
'payload.url'],
97-
dateFields: ['timestamp'],
98-
booleanFields: [],
99-
testMessage: {
100-
topic: 'submission.notification.update',
101-
originator: 'or-app',
102-
timestamp: '2019-02-25T00:00:00',
103-
'mime-type': 'application/json',
104-
payload: {
105-
resource: 'submission',
106-
id: '104366f8-f46b-45db-a971-11bc69e6c8ff',
107-
type: 'Contest Submission',
108-
url: 'https://s3.amazonaws.com/topcoder-dev-submissions-dmz/30054740-8547899-SUBMISSION_ZIP-1554188341581.zip#testing',
109-
memberId: 121212,
110-
legacyChallengeId: 30049360,
111-
created: '2019-04-02T06:59:29.785Z',
112-
updated: '2019-04-03T06:59:29.785Z',
113-
createdBy: 'user3',
114-
updatedBy: 'user4',
115-
submissionPhaseId: 345345,
116-
fileType: 'zip',
117-
isFileSubmission: true
118-
}
119-
}
12088
}
12189
}
12290

test/common/testHelper.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ async function consumeMessages () {
203203
// consume and commit all not processed messages
204204
const consumer = new Kafka.GroupConsumer(helper.getKafkaOptions())
205205
await consumer.init([{
206-
subscriptions: [config.REVIEW_TOPIC, config.CREATE_SUBMISSION_TOPIC, config.UPDATE_SUBMISSION_TOPIC,
206+
subscriptions: [config.REVIEW_TOPIC, config.CREATE_SUBMISSION_TOPIC,
207207
testData.avScanTopic, testData.reviewActionTopic],
208208
handler: (messageSet, topic, partition) => Promise.each(messageSet,
209209
(m) => consumer.commitOffset({ topic, partition, offset: m.offset }))

test/e2e/submission.processor.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ describe('Topcoder - Scorecard Submission Processor E2E Test', () => {
2626
testHelper.clearInterceptedLogging()
2727
})
2828

29-
for (const topic of [config.CREATE_SUBMISSION_TOPIC, config.UPDATE_SUBMISSION_TOPIC]) {
29+
for (const topic of [config.CREATE_SUBMISSION_TOPIC]) {
3030
const { operation, requiredFields, integerFields, stringFields, dateFields,
3131
booleanFields, testMessage } = testTopics[topic]
3232

test/unit/submission.processor.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ describe('Topcoder - Scorecard Submission Processor Unit Test', () => {
2424
testHelper.clearInterceptedLogging()
2525
})
2626

27-
for (const topic of [config.CREATE_SUBMISSION_TOPIC, config.UPDATE_SUBMISSION_TOPIC]) {
27+
for (const topic of [config.CREATE_SUBMISSION_TOPIC]) {
2828
const { operation, requiredFields, integerFields, stringFields, dateFields,
2929
booleanFields, testMessage } = testTopics[topic]
3030

0 commit comments

Comments
 (0)