Skip to content

Commit

Permalink
Modify event JSON keys to be camel case
Browse files Browse the repository at this point in the history
Currently they're dash separated but that doesn't really jive great with most JSON "standards" including https://google.github.io/styleguide/jsoncstyleguide.xml?showone=Property_Name_Format#Property_Name_Format.

While this wasn't really caught in the initial work by Marco (just caught that it was inconsisten between camel and dash) it seems more correct and portable to use camel case based on standards and library/developer expectations.

Matches what's done with other event payloads internally.
  • Loading branch information
tgianos committed Aug 27, 2019
1 parent ef10c55 commit dae6976
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 59 deletions.
Expand Up @@ -43,10 +43,10 @@
@Slf4j
abstract class AbstractSNSPublisher {
private static final String PUBLISH_METRIC_COUNTER_NAME_FORMAT = "genie.notifications.sns.publish.%s.counter";
private static final String EVENT_TYPE_KEY_NAME = "event-type";
private static final String EVENT_ID_KEY_NAME = "event-id";
private static final String EVENT_TIMESTAMP_KEY_NAME = "event-timestamp";
private static final String EVENT_DETAILS_KEY_NAME = "event-details";
private static final String EVENT_TYPE_KEY_NAME = "eventType";
private static final String EVENT_ID_KEY_NAME = "eventId";
private static final String EVENT_TIMESTAMP_KEY_NAME = "eventTimestamp";
private static final String EVENT_DETAILS_KEY_NAME = "eventDetails";

protected final SNSNotificationsProperties properties;
protected final MeterRegistry registry;
Expand Down
Expand Up @@ -46,44 +46,45 @@ public class JobFinishedSNSPublisher
extends AbstractSNSPublisher
implements ApplicationListener<JobStateChangeEvent> {

private static final String JOB_ID_KEY_NAME = "job-id";
private static final String JOB_VERSION_KEY_NAME = "job-version";
private static final String JOB_NAME_KEY_NAME = "job-name";
private static final String JOB_USER_KEY_NAME = "job-user";
private static final String JOB_DESCRIPTION_KEY_NAME = "job-description";
private static final String JOB_METADATA_KEY_NAME = "job-metadata";
private static final String JOB_TAGS_KEY_NAME = "job-tags";
private static final String JOB_CREATED_KEY_NAME = "job-created";
private static final String JOB_STATUS_KEY_NAME = "job-status";
private static final String JOB_COMMAND_CRITERION_KEY_NAME = "job-command-criterion";
private static final String JOB_CLUSTER_CRITERIA_KEY_NAME = "job-cluster-criteria";
private static final String JOB_STARTED_KEY_NAME = "job-started";
private static final String JOB_GROUPING_KEY_NAME = "job-grouping";
private static final String JOB_FINISHED_KEY_NAME = "job-finished";
private static final String JOB_AGENT_VERSION_KEY_NAME = "job-agent-version";
private static final String JOB_GROUPING_INSTANCE_KEY_NAME = "job-grouping-instance";
private static final String JOB_STATUS_MESSAGE_KEY_NAME = "job-status-message";
private static final String JOB_API_CLIENT_HOSTNAME_KEY_NAME = "job-api-client-hostname";
private static final String JOB_REQUESTED_MEMORY_KEY_NAME = "job-requested-memory";
private static final String JOB_AGENT_HOSTNAME_KEY_NAME = "job-agent-hostname";
private static final String JOB_API_CLIENT_USER_AGENT_KEY_NAME = "job-api-client-user-agent";
private static final String JOB_EXIT_CODE_KEY_NAME = "job-exit-code";
private static final String JOB_NUM_ATTACHMENTS_KEY_NAME = "job-num-attachments";
private static final String JOB_ARCHIVE_LOCATION_KEY_NAME = "job-archive-location";
private static final String JOB_USED_MEMORY_KEY_NAME = "job-used-memory";
private static final String COMMAND_ID_KEY_NAME = "command-id";
private static final String COMMAND_NAME_KEY_NAME = "command-name";
private static final String COMMAND_VERSION_KEY_NAME = "command-version";
private static final String COMMAND_DESCRIPTION_KEY_NAME = "command-description";
private static final String COMMAND_CREATED_KEY_NAME = "command-created";
private static final String COMMAND_UPDATED_KEY_NAME = "command-updated";
private static final String COMMAND_EXECUTABLE_KEY_NAME = "command-executable";
private static final String CLUSTER_ID_KEY_NAME = "cluster-id";
private static final String CLUSTER_NAME_KEY_NAME = "cluster-name";
private static final String CLUSTER_VERSION_KEY_NAME = "cluster-version";
private static final String CLUSTER_DESCRIPTION_KEY_NAME = "cluster-description";
private static final String CLUSTER_CREATED_KEY_NAME = "cluster-created";
private static final String CLUSTER_UPDATED_KEY_NAME = "cluster-updated";
private static final char COLON = ':';
private static final String JOB_ID_KEY_NAME = "jobId";
private static final String JOB_VERSION_KEY_NAME = "jobVersion";
private static final String JOB_NAME_KEY_NAME = "jobName";
private static final String JOB_USER_KEY_NAME = "jobUser";
private static final String JOB_DESCRIPTION_KEY_NAME = "jobDescription";
private static final String JOB_METADATA_KEY_NAME = "jobMetadata";
private static final String JOB_TAGS_KEY_NAME = "jobTags";
private static final String JOB_CREATED_KEY_NAME = "jobCreated";
private static final String JOB_STATUS_KEY_NAME = "jobStatus";
private static final String JOB_COMMAND_CRITERION_KEY_NAME = "jobCommandCriterion";
private static final String JOB_CLUSTER_CRITERIA_KEY_NAME = "jobClusterCriteria";
private static final String JOB_STARTED_KEY_NAME = "jobStarted";
private static final String JOB_GROUPING_KEY_NAME = "jobGrouping";
private static final String JOB_FINISHED_KEY_NAME = "jobFinished";
private static final String JOB_AGENT_VERSION_KEY_NAME = "jobAgentVersion";
private static final String JOB_GROUPING_INSTANCE_KEY_NAME = "jobGroupingInstance";
private static final String JOB_STATUS_MESSAGE_KEY_NAME = "jobStatusMessage";
private static final String JOB_API_CLIENT_HOSTNAME_KEY_NAME = "jobApiClientHostname";
private static final String JOB_REQUESTED_MEMORY_KEY_NAME = "jobRequestedMemory";
private static final String JOB_AGENT_HOSTNAME_KEY_NAME = "jobAgentHostname";
private static final String JOB_API_CLIENT_USER_AGENT_KEY_NAME = "jobApiClientUserAgent";
private static final String JOB_EXIT_CODE_KEY_NAME = "jobExitCode";
private static final String JOB_NUM_ATTACHMENTS_KEY_NAME = "jobNumAttachments";
private static final String JOB_ARCHIVE_LOCATION_KEY_NAME = "jobArchiveLocation";
private static final String JOB_USED_MEMORY_KEY_NAME = "jobUsedMemory";
private static final String COMMAND_ID_KEY_NAME = "commandId";
private static final String COMMAND_NAME_KEY_NAME = "commandName";
private static final String COMMAND_VERSION_KEY_NAME = "commandVersion";
private static final String COMMAND_DESCRIPTION_KEY_NAME = "commandDescription";
private static final String COMMAND_CREATED_KEY_NAME = "commandCreated";
private static final String COMMAND_UPDATED_KEY_NAME = "commandUpdated";
private static final String COMMAND_EXECUTABLE_KEY_NAME = "commandExecutable";
private static final String CLUSTER_ID_KEY_NAME = "clusterId";
private static final String CLUSTER_NAME_KEY_NAME = "clusterName";
private static final String CLUSTER_VERSION_KEY_NAME = "clusterVersion";
private static final String CLUSTER_DESCRIPTION_KEY_NAME = "clusterDescription";
private static final String CLUSTER_CREATED_KEY_NAME = "clusterCreated";
private static final String CLUSTER_UPDATED_KEY_NAME = "clusterUpdated";
private static final String APPLICATIONS_KEY_NAME = "applications";

private final JobPersistenceService jobPersistenceService;
Expand Down Expand Up @@ -204,7 +205,7 @@ public void onApplicationEvent(final JobStateChangeEvent event) {
APPLICATIONS_KEY_NAME,
job.getApplications().stream().map(
application ->
application.getId() + application.getMetadata().getVersion()
application.getId() + COLON + application.getMetadata().getVersion()
).collect(Collectors.toList())
);

Expand Down
Expand Up @@ -39,9 +39,9 @@ public class JobStateChangeSNSPublisher
extends AbstractSNSPublisher
implements ApplicationListener<JobStateChangeEvent> {

private static final String JOB_ID_KEY_NAME = "job-id";
private static final String FROM_STATE_KEY_NAME = "from-state";
private static final String TO_STATE_KEY_NAME = "to-state";
private static final String JOB_ID_KEY_NAME = "jobId";
private static final String FROM_STATE_KEY_NAME = "fromState";
private static final String TO_STATE_KEY_NAME = "toState";

/**
* Constructor.
Expand Down
Expand Up @@ -142,8 +142,7 @@ class JobFinishedSNSPublisherSpec extends Specification {
1 * snsProperties.getAdditionalEventKeys() >> extraKeysMap
1 * snsClient.publish(topicARN, _ as String) >> {
args ->
println args[1]
Map<String, Object> eventDetails = mapper.readValue(args[1] as String, Map.class).get(AbstractSNSPublisher.EVENT_DETAILS_KEY_NAME)
Map<String, Object> eventDetails = mapper.convertValue(mapper.readTree(args[1] as String).get(AbstractSNSPublisher.EVENT_DETAILS_KEY_NAME), Map.class)
Assert.that(eventDetails.entrySet().size() == 39)
Assert.that(eventDetails.entrySet().stream().filter({entry -> entry.getValue() == null}).count() == 29)
}
Expand Down Expand Up @@ -229,8 +228,7 @@ class JobFinishedSNSPublisherSpec extends Specification {
1 * snsProperties.getAdditionalEventKeys() >> extraKeysMap
1 * snsClient.publish(topicARN, _ as String) >> {
args ->
println args[1]
Map<String, Object> eventDetails = mapper.readValue(args[1] as String, Map.class).get(AbstractSNSPublisher.EVENT_DETAILS_KEY_NAME)
Map<String, Object> eventDetails = mapper.convertValue(mapper.readTree(args[1] as String).get(AbstractSNSPublisher.EVENT_DETAILS_KEY_NAME), Map.class)
Assert.that(eventDetails.entrySet().size() == 39)
Assert.that(eventDetails.entrySet().stream().filter({entry -> entry.getValue() == null}).count() == 0)
}
Expand Down
Expand Up @@ -126,14 +126,14 @@ class JobStateChangeSNSPublisherSpec extends Specification {
parsedMessage.size() == 6
parsedMessage.get("foo") as String == "bar"
parsedMessage.get("bar") as String == "foo"
parsedMessage.get("event-type") as String == "JOB_STATUS_CHANGE"
parsedMessage.get("event-id") != null
parsedMessage.get("event-timestamp") != null
Map<String, String> eventDetails = parsedMessage.get("event-details") as Map<String, String>
parsedMessage.get("eventType") as String == "JOB_STATUS_CHANGE"
parsedMessage.get("eventId") != null
parsedMessage.get("eventTimestamp") != null
Map<String, String> eventDetails = parsedMessage.get("eventDetails") as Map<String, String>
eventDetails != null
eventDetails.get("job-id") == jobId
eventDetails.get("from-state") == String.valueOf(prevState)
eventDetails.get("to-state") == JobStatus.RUNNING.name()
eventDetails.get("jobId") == jobId
eventDetails.get("fromState") == String.valueOf(prevState)
eventDetails.get("toState") == JobStatus.RUNNING.name()
where:
prevState | _
Expand Down Expand Up @@ -164,7 +164,5 @@ class JobStateChangeSNSPublisherSpec extends Specification {
MetricsUtils.newFailureTagsSetForException(e)
) >> counter
1 * counter.increment()
}
}

0 comments on commit dae6976

Please sign in to comment.