)]}'
{"java/src/main/java/monasca/api/app/command/CreateMetricCommand.java":[{"author":{"_account_id":18286,"name":"Shinya Kawabata","email":"s-kawabata@wx.jp.nec.com","username":"kawabata"},"change_message_id":"fc1bda10a7ce2dfde744c7fd82e5e0e774d7f25b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"import monasca.common.model.Services;"},{"line_number":30,"context_line":"import monasca.common.model.metric.Metric;"},{"line_number":31,"context_line":"import monasca.api.resource.exception.Exceptions;"},{"line_number":32,"context_line":"import scala.util.parsing.combinator.testing.Number;"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"public class CreateMetricCommand {"},{"line_number":35,"context_line":"  private static final long TIME_2MIN_MILLIS \u003d 120*1000;"}],"source_content_type":"text/x-java","patch_set":4,"id":"7a740942_756153d2","line":32,"updated":"2015-12-09 02:09:44.000000000","message":"Hi Kaiyan, maybe this import is never used.","commit_id":"2d81b52e7f47182d6b1745848e6cfa89e3c4ce0e"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"a63c5eadaa859c43293d2989cfccd34269e11b85","unresolved":false,"context_lines":[{"line_number":29,"context_line":"import monasca.common.model.Services;"},{"line_number":30,"context_line":"import monasca.common.model.metric.Metric;"},{"line_number":31,"context_line":"import monasca.api.resource.exception.Exceptions;"},{"line_number":32,"context_line":"import scala.util.parsing.combinator.testing.Number;"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"public class CreateMetricCommand {"},{"line_number":35,"context_line":"  private static final long TIME_2MIN_MILLIS \u003d 120*1000;"}],"source_content_type":"text/x-java","patch_set":4,"id":"7a740942_2685df58","line":32,"in_reply_to":"7a740942_756153d2","updated":"2015-12-09 04:03:53.000000000","message":"Yes you are absolutely right! I forgot to delete it... and same as \"import monasca.common.model.Services;\". Thank you for catching that!","commit_id":"2d81b52e7f47182d6b1745848e6cfa89e3c4ce0e"}],"java/src/test/java/monasca/api/resource/MetricResourceTest.java":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"3fd5b89c677f4d722da5f67e542a978ca65393e1","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    CreateMetricCommand metric \u003d fromJson(json, CreateMetricCommand.class);"},{"line_number":107,"context_line":"    ClientResponse response \u003d createResponseFor(metric);"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    assertEquals(response.getStatus(), 422, \"Timestamp may not be empty\");"},{"line_number":110,"context_line":"  }"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"  @SuppressWarnings(\"unchecked\")"}],"source_content_type":"text/x-java","patch_set":2,"id":"7a740942_d4c78610","line":109,"updated":"2015-12-04 21:02:39.000000000","message":"The third argument to assertEquals is the message that will be output if the test fails. I think you want a different check, something like what is done in shouldErrorOnPostWithCrossTenant()","commit_id":"169bcaf560a890cfb428033d17de5dc45a9a77a8"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"66bbe2b19c58b18eb053c5bc496eae3f9b9265f5","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    CreateMetricCommand metric \u003d fromJson(json, CreateMetricCommand.class);"},{"line_number":107,"context_line":"    ClientResponse response \u003d createResponseFor(metric);"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    assertEquals(response.getStatus(), 422, \"Timestamp may not be empty\");"},{"line_number":110,"context_line":"  }"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"  @SuppressWarnings(\"unchecked\")"}],"source_content_type":"text/x-java","patch_set":2,"id":"7a740942_aed4e1bc","line":109,"in_reply_to":"7a740942_d4c78610","updated":"2015-12-05 01:26:19.000000000","message":"Thanks Craig! I didn\u0027t actually check the error message because it doesn\u0027t have one in the CreateMetricCommand. I will add the error message as well as the check here in next patch. \nAlso I\u0027m having issue checking if timestamp is null. Timestamp seems always filled in as zero when it suppose to be null if I define timestamp to be a long kind. If I change it to be Long instead of long, it returns server_error instead of unprocurable_entity. Do you have any good way to solve that? Sorry I\u0027m not very familiar with Java... I want to make \"Timestamp may not be empty\" and \"Timestamp is out of legal range\" to be two different error messages.","commit_id":"169bcaf560a890cfb428033d17de5dc45a9a77a8"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"3fd5b89c677f4d722da5f67e542a978ca65393e1","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        createResponseFor(new CreateMetricCommand(\"test_metrictype\", dimensions, 0L, 0.0,"},{"line_number":146,"context_line":"            valueMeta));"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    assertEquals(response.getStatus(), 422, \"Timestamp may not be zero\");"},{"line_number":149,"context_line":"  }"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"  public void shouldErrorOnPostWithCrossTenant() {"}],"source_content_type":"text/x-java","patch_set":2,"id":"7a740942_b4d43abd","line":148,"updated":"2015-12-04 21:02:39.000000000","message":"See above","commit_id":"169bcaf560a890cfb428033d17de5dc45a9a77a8"},{"author":{"_account_id":18286,"name":"Shinya Kawabata","email":"s-kawabata@wx.jp.nec.com","username":"kawabata"},"change_message_id":"7bb6b2a2738403b85dc63a410f94f2482aeefb6c","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import static org.mockito.Matchers.any;"},{"line_number":20,"context_line":"import static org.mockito.Matchers.anyString;"},{"line_number":21,"context_line":"import static org.mockito.Matchers.eq;"},{"line_number":22,"context_line":"import static org.mockito.Mockito.*;"},{"line_number":23,"context_line":"import static org.testng.Assert.assertEquals;"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"import java.util.HashMap;"}],"source_content_type":"text/x-java","patch_set":3,"id":"7a740942_97de47db","line":22,"updated":"2015-12-09 01:26:13.000000000","message":"According to Google Java Style, wildcard import is not recommended.\n\nhttps://google.github.io/styleguide/javaguide.html#s3.3.1-wildcard-imports","commit_id":"3bfe1e941669a6ae34dec5125d22e2c213085b93"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"a6f140bb6fa1afaceebb22fcd407d25b185a78ca","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import static org.mockito.Matchers.any;"},{"line_number":20,"context_line":"import static org.mockito.Matchers.anyString;"},{"line_number":21,"context_line":"import static org.mockito.Matchers.eq;"},{"line_number":22,"context_line":"import static org.mockito.Mockito.*;"},{"line_number":23,"context_line":"import static org.testng.Assert.assertEquals;"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"import java.util.HashMap;"}],"source_content_type":"text/x-java","patch_set":3,"id":"7a740942_7ab3824d","line":22,"in_reply_to":"7a740942_97de47db","updated":"2015-12-09 01:37:20.000000000","message":"Thank you Shinya! I\u0027m changing it back on the next patch!","commit_id":"3bfe1e941669a6ae34dec5125d22e2c213085b93"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"822120a416e14b32d9232b51a6ff1d61e184eaa7","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    String json \u003d jsonFixture(\"fixtures/metricSet.json\");"},{"line_number":83,"context_line":"    CreateMetricCommand[] metrics \u003d fromJson(json, CreateMetricCommand[].class);"},{"line_number":84,"context_line":"    metrics[0].timestamp \u003d timestamp;"},{"line_number":85,"context_line":"    metrics[1].timestamp \u003d timestamp;"},{"line_number":86,"context_line":"    ClientResponse response \u003d createResponseFor(metrics);"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    assertEquals(response.getStatus(), 204);"}],"source_content_type":"text/x-java","patch_set":6,"id":"7a740942_86005303","line":85,"updated":"2015-12-09 04:36:40.000000000","message":"In all of these it would be better to change the json files in fixtures rather than patching the metrics up afterwards","commit_id":"1641013270d56a4cd52facf2e800d92df862fc25"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"822120a416e14b32d9232b51a6ff1d61e184eaa7","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        .post(ClientResponse.class, request);"},{"line_number":320,"context_line":"  }"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"  public void shouldErrorOnCreateWithoutValue() throws Exception {"},{"line_number":323,"context_line":"    String json \u003d jsonFixture(\"fixtures/metricWithoutValue.json\");"},{"line_number":324,"context_line":"    CreateMetricCommand metric \u003d fromJson(json, CreateMetricCommand.class);"},{"line_number":325,"context_line":"    metric.timestamp \u003d timestamp;"}],"source_content_type":"text/x-java","patch_set":6,"id":"7a740942_484a7956","line":322,"updated":"2015-12-09 04:36:40.000000000","message":"Thanks for adding this missing test","commit_id":"1641013270d56a4cd52facf2e800d92df862fc25"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"822120a416e14b32d9232b51a6ff1d61e184eaa7","unresolved":false,"context_lines":[{"line_number":322,"context_line":"  public void shouldErrorOnCreateWithoutValue() throws Exception {"},{"line_number":323,"context_line":"    String json \u003d jsonFixture(\"fixtures/metricWithoutValue.json\");"},{"line_number":324,"context_line":"    CreateMetricCommand metric \u003d fromJson(json, CreateMetricCommand.class);"},{"line_number":325,"context_line":"    metric.timestamp \u003d timestamp;"},{"line_number":326,"context_line":"    ClientResponse response \u003d createResponseFor(metric);"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    ErrorMessages.assertThat(response.getEntity(String.class)).matches(\"unprocessable_entity\", 422,"}],"source_content_type":"text/x-java","patch_set":6,"id":"7a740942_282ccd97","line":325,"updated":"2015-12-09 04:36:40.000000000","message":"You already have a timestamp in fixtures/metricWithoutValue.json","commit_id":"1641013270d56a4cd52facf2e800d92df862fc25"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c817abf48b71dbe263bbf8dd50bd63d6e985fe0a","unresolved":false,"context_lines":[{"line_number":322,"context_line":"  public void shouldErrorOnCreateWithoutValue() throws Exception {"},{"line_number":323,"context_line":"    String json \u003d jsonFixture(\"fixtures/metricWithoutValue.json\");"},{"line_number":324,"context_line":"    CreateMetricCommand metric \u003d fromJson(json, CreateMetricCommand.class);"},{"line_number":325,"context_line":"    metric.timestamp \u003d timestamp;"},{"line_number":326,"context_line":"    ClientResponse response \u003d createResponseFor(metric);"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    ErrorMessages.assertThat(response.getEntity(String.class)).matches(\"unprocessable_entity\", 422,"}],"source_content_type":"text/x-java","patch_set":6,"id":"7a740942_88a621ac","line":325,"in_reply_to":"7a740942_282ccd97","updated":"2015-12-09 04:53:40.000000000","message":"Thank you Craig! Yes but I want it to be the current timestamp when this test runs every time. Because there is a validate timestamp function in CreateMetricCommand.java and it checks if the timestamp is in 2 weeks range. This is also the reason why I added metrics[0].timestamp \u003d timestamp and metrics[1].timestamp \u003d timestamp earlier.","commit_id":"1641013270d56a4cd52facf2e800d92df862fc25"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"649c17c5f801ec67ba8538ece590b950c0fc5d0f","unresolved":false,"context_lines":[{"line_number":322,"context_line":"  public void shouldErrorOnCreateWithoutValue() throws Exception {"},{"line_number":323,"context_line":"    String json \u003d jsonFixture(\"fixtures/metricWithoutValue.json\");"},{"line_number":324,"context_line":"    CreateMetricCommand metric \u003d fromJson(json, CreateMetricCommand.class);"},{"line_number":325,"context_line":"    metric.timestamp \u003d timestamp;"},{"line_number":326,"context_line":"    ClientResponse response \u003d createResponseFor(metric);"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    ErrorMessages.assertThat(response.getEntity(String.class)).matches(\"unprocessable_entity\", 422,"}],"source_content_type":"text/x-java","patch_set":6,"id":"7a740942_1b08d6d8","line":325,"in_reply_to":"7a740942_88a621ac","updated":"2015-12-10 17:04:34.000000000","message":"Yes, of course. Makes sense","commit_id":"1641013270d56a4cd52facf2e800d92df862fc25"}]}
