import org.sonar.db.component.ComponentDbTester;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.component.ComponentTesting;
+import org.sonar.db.component.SnapshotDto;
+import org.sonar.db.issue.IssueDto;
import org.sonar.db.measure.MeasureDto;
import org.sonar.db.measure.custom.CustomMeasureDto;
import org.sonar.db.metric.MetricDto;
import org.sonar.db.property.PropertyDto;
import org.sonar.db.rule.RuleDefinitionDto;
+import org.sonar.db.source.FileSourceDto;
import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;
@Test
public void close_issues_clean_index_and_file_sources_of_disabled_components_specified_by_uuid_in_configuration() {
- dbTester.prepareDbUnit(getClass(), "close_issues_clean_index_and_files_sources_of_specified_components.xml");
- when(system2.now()).thenReturn(1450000000000L);
- underTest.purge(dbSession, newConfigurationWith30Days(system2, THE_PROJECT_UUID, "P1", "EFGH", "GHIJ"), PurgeListener.EMPTY, new PurgeProfiler());
+ // components and issues, updated 31 days ago
+ when(system2.now()).thenReturn(DateUtils.addDays(new Date(), -31).getTime());
+ RuleDefinitionDto rule = dbTester.rules().insert();
+ ComponentDto project = dbTester.components().insertMainBranch(p -> p.setEnabled(false));
+ dbTester.components().insertSnapshot(project);
+ dbTester.components().insertSnapshot(project);
+ dbTester.components().insertSnapshot(project, s -> s.setLast(false));
+
+ ComponentDto module = dbTester.components().insertComponent(newModuleDto(project).setEnabled(false));
+ ComponentDto dir = dbTester.components().insertComponent(newDirectory(module, "sub").setEnabled(false));
+ ComponentDto srcFile = dbTester.components().insertComponent(newFileDto(module, dir).setEnabled(false));
+ ComponentDto testFile = dbTester.components().insertComponent(newFileDto(module, dir).setEnabled(false));
+ ComponentDto nonSelectedFile = dbTester.components().insertComponent(newFileDto(module, dir).setEnabled(false));
+ IssueDto openOnFile = dbTester.issues().insert(rule, project, srcFile, issue -> issue.setStatus("OPEN"));
+ IssueDto confirmOnFile = dbTester.issues().insert(rule, project, srcFile, issue -> issue.setStatus("CONFIRM"));
+ IssueDto openOnDir = dbTester.issues().insert(rule, project, dir, issue -> issue.setStatus("OPEN"));
+ IssueDto confirmOnDir = dbTester.issues().insert(rule, project, dir, issue -> issue.setStatus("CONFIRM"));
+ IssueDto openOnNonSelected = dbTester.issues().insert(rule, project, nonSelectedFile, issue -> issue.setStatus("OPEN"));
+ IssueDto confirmOnNonSelected = dbTester.issues().insert(rule, project, nonSelectedFile, issue -> issue.setStatus("CONFIRM"));
+
+ assertThat(dbTester.countSql("select count(*) from snapshots where purge_status = 1")).isEqualTo(0);
+
+ assertThat(dbTester.countSql("select count(*) from issues where status = 'CLOSED'")).isEqualTo(0);
+ assertThat(dbTester.countSql("select count(*) from issues where resolution = 'REMOVED'")).isEqualTo(0);
+
+ dbTester.fileSources().insertFileSource(srcFile);
+ dbTester.fileSources().insertFileSource(testFile, f -> f.setDataType("TEST"));
+ FileSourceDto nonSelectedFileSource = dbTester.fileSources().insertFileSource(nonSelectedFile);
+ assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(3);
+
+ // back to present
+ when(system2.now()).thenReturn(new Date().getTime());
+ underTest.purge(dbSession, newConfigurationWith30Days(system2, project.uuid(), module.uuid(), dir.uuid(), srcFile.uuid(), testFile.uuid()), PurgeListener.EMPTY, new PurgeProfiler());
dbSession.commit();
- dbTester.assertDbUnit(getClass(), "close_issues_clean_index_and_files_sources_of_specified_components-result.xml",
- new String[] {"issue_close_date", "issue_update_date"},
- "projects", "snapshots", "issues");
+
+ // set purge_status=1 for non-last snapshot
+ assertThat(dbTester.countSql("select count(*) from snapshots where purge_status = 1")).isEqualTo(1);
+
+ // close open issues of selected
+ assertThat(dbTester.countSql("select count(*) from issues where status = 'CLOSED'")).isEqualTo(4);
+ for (IssueDto issue : Arrays.asList(openOnFile, confirmOnFile, openOnDir, confirmOnDir)) {
+ assertThat(dbTester.getDbClient().issueDao().selectByKey(dbSession, issue.getKey()).get())
+ .extracting("status", "resolution")
+ .containsExactlyInAnyOrder("CLOSED", "REMOVED");
+ }
+ for (IssueDto issue : Arrays.asList(openOnNonSelected, confirmOnNonSelected)) {
+ assertThat(dbTester.getDbClient().issueDao().selectByKey(dbSession, issue.getKey()).get())
+ .extracting("status", "resolution")
+ .containsExactlyInAnyOrder(issue.getStatus(), null);
+ }
+
+ // delete file sources of selected
+ assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1);
+ assertThat(dbTester.getDbClient().fileSourceDao().selectSourceByFileUuid(dbSession, nonSelectedFileSource.getFileUuid())).isNotNull();
}
@Test
@Test
public void should_delete_old_closed_issues() {
- PurgeListener purgeListener = mock(PurgeListener.class);
- dbTester.prepareDbUnit(getClass(), "should_delete_old_closed_issues.xml");
-
- underTest.purge(dbSession, newConfigurationWith30Days(), purgeListener, new PurgeProfiler());
- dbSession.commit();
+ RuleDefinitionDto rule = dbTester.rules().insert();
+ ComponentDto project = dbTester.components().insertMainBranch();
- dbTester.assertDbUnit(getClass(), "should_delete_old_closed_issues-result.xml", "issues", "issue_changes");
+ ComponentDto module = dbTester.components().insertComponent(newModuleDto(project));
+ ComponentDto file = dbTester.components().insertComponent(newFileDto(module));
- Class<ArrayList<String>> listClass = (Class<ArrayList<String>>) (Class) ArrayList.class;
- ArgumentCaptor<ArrayList<String>> issueKeys = ArgumentCaptor.forClass(listClass);
- ArgumentCaptor<String> projectUuid = ArgumentCaptor.forClass(String.class);
+ IssueDto oldClosed = dbTester.issues().insert(rule, project, file, issue -> {
+ issue.setStatus("CLOSED");
+ issue.setIssueCloseDate(DateUtils.addDays(new Date(), -31));
+ });
- verify(purgeListener).onIssuesRemoval(projectUuid.capture(), issueKeys.capture());
- assertThat(projectUuid.getValue()).isEqualTo(THE_PROJECT_UUID);
- assertThat(issueKeys.getValue()).containsOnly("ISSUE-1", "ISSUE-2");
- }
+ IssueDto notOldEnoughClosed = dbTester.issues().insert(rule, project, file, issue -> {
+ issue.setStatus("CLOSED");
+ issue.setIssueCloseDate(new Date());
+ });
+ IssueDto notClosed = dbTester.issues().insert(rule, project, file);
- @Test
- public void should_delete_all_closed_issues() {
- dbTester.prepareDbUnit(getClass(), "should_delete_all_closed_issues.xml");
- PurgeConfiguration conf = new PurgeConfiguration(new IdUuidPair(THE_PROJECT_ID, "1"), emptyList(),
- 0, Optional.empty(), System2.INSTANCE, Collections.emptyList());
- underTest.purge(dbSession, conf, PurgeListener.EMPTY, new PurgeProfiler());
+ when(system2.now()).thenReturn(new Date().getTime());
+ underTest.purge(dbSession, newConfigurationWith30Days(system2, project.uuid()), PurgeListener.EMPTY, new PurgeProfiler());
dbSession.commit();
- dbTester.assertDbUnit(getClass(), "should_delete_all_closed_issues-result.xml", "issues", "issue_changes");
+
+ // old closed got deleted
+ assertThat(dbTester.getDbClient().issueDao().selectByKey(dbSession, oldClosed.getKey())).isEmpty();
+
+ // others remain
+ assertThat(dbTester.countRowsOfTable("issues")).isEqualTo(2);
+ assertThat(dbTester.getDbClient().issueDao().selectByKey(dbSession, notOldEnoughClosed.getKey())).isNotEmpty();
+ assertThat(dbTester.getDbClient().issueDao().selectByKey(dbSession, notClosed.getKey())).isNotEmpty();
}
@Test
+++ /dev/null
-<!--
-
-What has been changed :
-* enabled=false on projects
-* purge_status=1 on snapshots
-* resolve not already resolved issues on all components
-
--->
-<dataset>
-
- <!-- the project -->
- <projects organization_uuid="org1"
- uuid="P1"
- uuid_path="NOT_USED"
- project_uuid="P1"
- module_uuid="[null]"
- module_uuid_path="."
- main_branch_project_uuid="[null]"
- created_at="[null]"
- long_name="[null]"
- scope="PRJ"
- qualifier="TRK"
- kee="project"
- name="project"
- description="[null]"
- private="[false]"
- tags="[null]"
- language="java"
- copy_component_uuid="[null]"
- developer_uuid="[null]"
- path="[null]"
- deprecated_kee="[null]"
- authorization_updated_at="[null]"
- id="1"
- enabled="[false]"
- root_uuid="P1"
- b_changed="[false]"
- b_copy_component_uuid="[null]"
- b_description="[null]"
- b_enabled="[false]"
- b_uuid_path="[null]"
- b_language="[null]"
- b_long_name="[null]"
- b_module_uuid="[null]"
- b_module_uuid_path="[null]"
- b_name="[null]"
- b_path="[null]"
- b_qualifier="[null]"/>
-
- <!-- the directory -->
- <projects organization_uuid="org1"
- uuid="EFGH"
- uuid_path="NOT_USED"
- project_uuid="P1"
- module_uuid="P1"
- module_uuid_path="."
- main_branch_project_uuid="[null]"
- created_at="[null]"
- long_name="[null]"
- scope="DIR"
- qualifier="DIR"
- kee="project:my/dir"
- name="my/dir"
- description="[null]"
- private="[false]"
- tags="[null]"
- language="java"
- copy_component_uuid="[null]"
- developer_uuid="[null]"
- path="[null]"
- deprecated_kee="[null]"
- authorization_updated_at="[null]"
- id="2"
- enabled="[false]"
- root_uuid="P1"
- b_changed="[false]"
- b_copy_component_uuid="[null]"
- b_description="[null]"
- b_enabled="[false]"
- b_uuid_path="[null]"
- b_language="[null]"
- b_long_name="[null]"
- b_module_uuid="[null]"
- b_module_uuid_path="[null]"
- b_name="[null]"
- b_path="[null]"
- b_qualifier="[null]"/>
-
- <!-- the file -->
- <projects organization_uuid="org1"
- uuid="GHIJ"
- uuid_path="NOT_USED"
- project_uuid="P1"
- module_uuid="P1"
- module_uuid_path=".P1."
- main_branch_project_uuid="[null]"
- created_at="[null]"
- long_name="[null]"
- scope="FIL"
- qualifier="FIL"
- kee="project:my/dir/File.java"
- name="my/dir/File.java"
- description="[null]"
- private="[false]"
- tags="[null]"
- language="java"
- copy_component_uuid="[null]"
- developer_uuid="[null]"
- path="[null]"
- deprecated_kee="[null]"
- authorization_updated_at="[null]"
- id="3"
- enabled="[false]"
- root_uuid="P1"
- b_changed="[false]"
- b_copy_component_uuid="[null]"
- b_description="[null]"
- b_enabled="[false]"
- b_uuid_path="[null]"
- b_language="[null]"
- b_long_name="[null]"
- b_module_uuid="[null]"
- b_module_uuid_path="[null]"
- b_name="[null]"
- b_path="[null]"
- b_qualifier="[null]"/>
-
- <snapshots id="1"
- uuid="u1"
- component_uuid="P1"
- status="P"
- islast="[false]"
- purge_status="1"
- period1_mode="[null]"
- period1_param="[null]"
- period1_date="[null]"
- period2_mode="[null]"
- period2_param="[null]"
- period2_date="[null]"
- period3_mode="[null]"
- period3_param="[null]"
- period3_date="[null]"
- period4_mode="[null]"
- period4_param="[null]"
- period4_date="[null]"
- period5_mode="[null]"
- period5_param="[null]"
- period5_date="[null]"
- created_at="1228222680000"
- build_date="1228222680000"
- version="[null]"
- />
-
- <!-- Open issue on file -->
- <issues id="1"
- kee="ISSUE-1"
- component_uuid="GHIJ"
- project_uuid="P1"
- status="CLOSED"
- issue_close_date="1396994400000"
- resolution="REMOVED"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="1450000000000"
- issue_creation_date="1366063200000"
- issue_update_date="1396994400000"
- created_at="1450000000000"
- tags="[null]"
- locations="[null]"
- issue_type="[null]"
- />
-
- <!-- Open issue on directory -->
- <issues id="2"
- kee="ISSUE-2"
- component_uuid="EFGH"
- project_uuid="P1"
- status="CLOSED"
- issue_close_date="1396994400000"
- resolution="REMOVED"
- line="[null]"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="1450000000000"
- issue_creation_date="1366063200000"
- issue_update_date="1396994400000"
- created_at="1450000000000"
- tags="[null]"
- locations="[null]"
- issue_type="[null]"/>
-
- <!-- Open issue on project -->
- <issues id="3"
- kee="ISSUE-3"
- component_uuid="P1"
- project_uuid="P1"
- status="CLOSED"
- issue_close_date="1396994400000"
- resolution="REMOVED"
- line="[null]"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="1450000000000"
- issue_creation_date="1366063200000"
- issue_update_date="1396994400000"
- created_at="1450000000000"
- tags="[null]"
- locations="[null]"
- issue_type="[null]"/>
-
- <!-- Resolved issue on file -> not to be updated -->
- <issues id="4"
- kee="ISSUE-4"
- component_uuid="GHIJ"
- project_uuid="P1"
- status="CLOSED"
- issue_close_date="1449529200000"
- resolution="FIXED"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="1450000000000"
- issue_creation_date="1366063200000"
- issue_update_date="1396908000000"
- created_at="1450000000000"
- tags="[null]"
- locations="[null]"
- issue_type="[null]"/>
-
-</dataset>
+++ /dev/null
-<dataset>
-
- <!-- the project -->
- <projects organization_uuid="org1"
- uuid="P1"
- uuid_path="NOT_USED"
- project_uuid="P1"
- module_uuid="[null]"
- module_uuid_path="."
- main_branch_project_uuid="[null]"
- created_at="[null]"
- long_name="[null]"
- scope="PRJ"
- qualifier="TRK"
- kee="project"
- name="project"
- description="[null]"
- private="[false]"
- language="java"
- copy_component_uuid="[null]"
- developer_uuid="[null]"
- path="[null]"
- deprecated_kee="[null]"
- authorization_updated_at="[null]"
- id="1"
- enabled="[false]"
- root_uuid="P1"
- b_changed="[false]"
- b_copy_component_uuid="[null]"
- b_description="[null]"
- b_enabled="[false]"
- b_uuid_path="[null]"
- b_language="[null]"
- b_long_name="[null]"
- b_module_uuid="[null]"
- b_module_uuid_path="[null]"
- b_name="[null]"
- b_path="[null]"
- b_qualifier="[null]"/>
-
- <!-- the directory -->
- <projects organization_uuid="org1"
- uuid="EFGH"
- uuid_path="NOT_USED"
- project_uuid="P1"
- module_uuid="P1"
- module_uuid_path="."
- main_branch_project_uuid="[null]"
- created_at="[null]"
- long_name="[null]"
- scope="DIR"
- qualifier="DIR"
- kee="project:my/dir"
- name="my/dir"
- description="[null]"
- private="[false]"
- language="java"
- copy_component_uuid="[null]"
- developer_uuid="[null]"
- path="[null]"
- deprecated_kee="[null]"
- authorization_updated_at="[null]"
- id="2"
- enabled="[false]"
- root_uuid="P1"
- b_changed="[false]"
- b_copy_component_uuid="[null]"
- b_description="[null]"
- b_enabled="[false]"
- b_uuid_path="[null]"
- b_language="[null]"
- b_long_name="[null]"
- b_module_uuid="[null]"
- b_module_uuid_path="[null]"
- b_name="[null]"
- b_path="[null]"
- b_qualifier="[null]"/>
-
- <!-- the file -->
- <projects organization_uuid="org1"
- uuid="GHIJ"
- uuid_path="NOT_USED"
- project_uuid="P1"
- module_uuid="P1"
- module_uuid_path=".P1."
- main_branch_project_uuid="[null]"
- created_at="[null]"
- long_name="[null]"
- scope="FIL"
- qualifier="FIL"
- kee="project:my/dir/File.java"
- name="my/dir/File.java"
- description="[null]"
- private="[false]"
- language="java"
- copy_component_uuid="[null]"
- developer_uuid="[null]"
- path="[null]"
- deprecated_kee="[null]"
- authorization_updated_at="[null]"
- id="3"
- enabled="[false]"
- root_uuid="P1"
- b_changed="[false]"
- b_copy_component_uuid="[null]"
- b_description="[null]"
- b_enabled="[false]"
- b_uuid_path="[null]"
- b_language="[null]"
- b_long_name="[null]"
- b_module_uuid="[null]"
- b_module_uuid_path="[null]"
- b_name="[null]"
- b_path="[null]"
- b_qualifier="[null]"/>
-
- <snapshots id="1"
- uuid="u1"
- component_uuid="P1"
- status="P"
- islast="[false]"
- purge_status="[null]"
- period1_mode="[null]"
- period1_param="[null]"
- period1_date="[null]"
- period2_mode="[null]"
- period2_param="[null]"
- period2_date="[null]"
- period3_mode="[null]"
- period3_param="[null]"
- period3_date="[null]"
- period4_mode="[null]"
- period4_param="[null]"
- period4_date="[null]"
- period5_mode="[null]"
- period5_param="[null]"
- period5_date="[null]"
- created_at="1228222680000"
- build_date="1228222680000"
- version="[null]"
- />
-
- <!-- Open issue on file -->
- <issues id="1"
- kee="ISSUE-1"
- component_uuid="GHIJ"
- project_uuid="P1"
- status="OPEN"
- issue_close_date="[null]"
- resolution="[null]"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1450000000000"
- locations="[null]"
- issue_type="[null]"/>
-
- <!-- Open issue on directory -->
- <issues id="2"
- kee="ISSUE-2"
- component_uuid="EFGH"
- project_uuid="P1"
- status="OPEN"
- issue_close_date="[null]"
- resolution="[null]"
- line="[null]"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1450000000000"
- locations="[null]"
- issue_type="[null]"/>
-
- <!-- Open issue on project -->
- <issues id="3"
- kee="ISSUE-3"
- component_uuid="P1"
- project_uuid="P1"
- status="CONFIRM"
- issue_close_date="[null]"
- resolution="[null]"
- line="[null]"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1450000000000"
- locations="[null]"
- issue_type="[null]"/>
-
- <!-- Resolved issue on file -> not to be updated -->
- <issues id="4"
- kee="ISSUE-4"
- component_uuid="GHIJ"
- project_uuid="P1"
- status="CLOSED"
- issue_close_date="1449529200000"
- resolution="FIXED"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="1450000000000"
- issue_creation_date="1366063200000"
- issue_update_date="1396908000000"
- created_at="1450000000000"
- locations="[null]"
- issue_type="[null]"/>
-
- <file_sources id="1"
- project_uuid="P1"
- file_uuid="GHIJ"
- binary_data="[null]"
- line_hashes="[null]"
- line_count="0"
- data_hash="321654987"
- revision="123456789"
- created_at="123456789"
- updated_at="123456789"
- src_hash="12345"
- data_type="SOURCE"/>
- <file_sources id="2"
- project_uuid="P1"
- file_uuid="KLMN"
- binary_data="[null]"
- line_hashes="[null]"
- line_count="0"
- data_hash="321654988"
- revision="123456789"
- created_at="123456789"
- updated_at="123456789"
- src_hash="123456"
- data_type="SOURCE"/>
- <file_sources id="3"
- project_uuid="P1"
- file_uuid="GHIJ"
- binary_data="[null]"
- line_hashes="[null]"
- line_count="0"
- data_hash="321654987"
- revision="123456789"
- created_at="123456789"
- updated_at="123456789"
- src_hash="12345"
- data_type="TEST"/>
- <file_sources id="4"
- project_uuid="P1"
- file_uuid="KLMN"
- binary_data="[null]"
- line_hashes="[null]"
- line_count="0"
- data_hash="321654988"
- revision="123456789"
- created_at="123456789"
- updated_at="123456789"
- src_hash="123456"
- data_type="TEST"/>
-
-</dataset>
+++ /dev/null
-<!--
-
- EXACTLY THE SAME FILE. NO ROWS HAVE BEEN DELETED.
-
--->
-<dataset>
-
- <projects organization_uuid="org1"
- uuid="1"
- uuid_path="NOT_USED"
- enabled="[true]"
- root_id="[null]"
- created_at="[null]"
- long_name="[null]"
- scope="PRJ"
- qualifier="TRK"
- kee="project"
- name="project"
- description="[null]"
- private="[false]"
- language="java"
- copy_component_uuid="[null]"
- developer_uuid="[null]"
- authorization_updated_at="[null]"
- id="1"/>
-
- <snapshots id="1"
- uuid="u1"
- status="P"
- islast="[true]"
- purge_status="[null]"
- period1_mode="[null]"
- period1_param="[null]"
- period1_date="[null]"
- period2_mode="[null]"
- period2_param="[null]"
- period2_date="[null]"
- period3_mode="[null]"
- period3_param="[null]"
- period3_date="[null]"
- period4_mode="[null]"
- period4_param="[null]"
- period4_date="[null]"
- period5_mode="[null]"
- period5_param="[null]"
- period5_date="[null]"
- created_at="1228222680000"
- build_date="1228222680000"
- version="[null]"
- />
-
-
- <!-- old closed issues on file and project -->
- <!--
- <issues id="1" kee="ISSUE-1"
- component_uuid="100"
- project_uuid="1"
- status="CLOSED"
- issue_close_date="1262300400000"
- resolution="FIXED" line="200" severity="BLOCKER" reporter="[null]" assignee="arthur" rule_id="500" manual_severity="[false]"
- message="[null]" action_plan_key="[null]" gap="[null]" effort="[null]" issue_attributes="[null]" checksum="[null]" author_login="[null]"
- updated_at="[null]" issue_creation_date="1366063200000" issue_update_date="1366063200000" created_at="2013-04-16"
- locations="[null]" />
- <issue_changes id="1" kee="[null]" issue_key="ISSUE-1" created_at="[null]" updated_at="[null]" user_login="admin" change_type="comment" change_data="abc" issue_change_creation_date="[null]"/>
-
- <issues id="2" kee="ISSUE-2"
- component_uuid="1"
- project_uuid="1"
- status="CLOSED"
- issue_close_date="1262300400000"
- resolution="FIXED" line="200" severity="BLOCKER" reporter="[null]" assignee="arthur" rule_id="500" manual_severity="[false]"
- message="[null]" action_plan_key="[null]" gap="[null]" effort="[null]" issue_attributes="[null]" checksum="[null]" author_login="[null]"
- updated_at="[null]" issue_creation_date="1366063200000" issue_update_date="1366063200000" created_at="2013-04-16" locations="[null]" locations="[null]"/>
- <issue_changes id="2" kee="[null]" issue_key="ISSUE-2" created_at="[null]" updated_at="[null]" user_login="admin" change_type="comment" change_data="abc" issue_change_creation_date="[null]"/>
- -->
-
- <!-- old open issues -->
- <issues id="3"
- kee="ISSUE-3"
- component_uuid="1"
- project_uuid="1"
- status="OPEN"
- issue_close_date="[null]"
- resolution="[null]"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- tags="[null]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1400000000000"
- locations="[null]"
- issue_type="[null]"/>
- <issue_changes id="3"
- kee="[null]"
- issue_key="ISSUE-3"
- created_at="[null]"
- updated_at="[null]"
- user_login="admin_uuid"
- change_type="comment"
- change_data="abc"
- issue_change_creation_date="[null]"/>
-
- <!-- recent open and closed issues -->
- <issues id="4"
- kee="ISSUE-4"
- component_uuid="100"
- project_uuid="1"
- status="OPEN"
- issue_close_date="[null]"
- resolution="[null]"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- tags="[null]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1400000000000"
- locations="[null]"
- issue_type="[null]"/>
- <issue_changes id="4"
- kee="[null]"
- issue_key="ISSUE-4"
- created_at="[null]"
- updated_at="[null]"
- user_login="admin_uuid"
- change_type="comment"
- change_data="abc"
- issue_change_creation_date="[null]"/>
-
- <!--
- <issues id="5" kee="ISSUE-5"
- component_uuid="100"
- project_uuid="1"
- status="CLOSED"
- issue_close_date="1735686000000"
- resolution="FIXED" line="200" severity="BLOCKER" reporter="[null]" assignee="arthur" rule_id="500" manual_severity="[false]"
- message="[null]" action_plan_key="[null]" gap="[null]" effort="[null]" issue_attributes="[null]" checksum="[null]" author_login="[null]"
- updated_at="[null]" issue_creation_date="1366063200000" issue_update_date="1366063200000" created_at="2013-04-16" locations="[null]"/>
- <issue_changes id="5" kee="[null]" issue_key="ISSUE-5" created_at="[null]" updated_at="[null]" user_login="admin" change_type="comment" change_data="abc" issue_change_creation_date="[null]"/>
- -->
-</dataset>
+++ /dev/null
-<dataset>
-
- <projects organization_uuid="org1"
- uuid="1"
- uuid_path="NOT_USED"
- enabled="[true]"
- root_uuid="1"
- project_uuid="1"
- created_at="[null]"
- long_name="[null]"
- scope="PRJ"
- qualifier="TRK"
- kee="project"
- name="project"
- description="[null]"
- private="[false]"
- language="java"
- copy_component_uuid="[null]"
- developer_uuid="[null]"
- authorization_updated_at="[null]"
- id="1"/>
-
- <snapshots id="1"
- uuid="u1"
- component_uuid="1"
- status="P"
- islast="[true]"
- purge_status="[null]"
- period1_mode="[null]"
- period1_param="[null]"
- period1_date="[null]"
- period2_mode="[null]"
- period2_param="[null]"
- period2_date="[null]"
- period3_mode="[null]"
- period3_param="[null]"
- period3_date="[null]"
- period4_mode="[null]"
- period4_param="[null]"
- period4_date="[null]"
- period5_mode="[null]"
- period5_param="[null]"
- period5_date="[null]"
- created_at="1228222680000"
- build_date="1228222680000"
- version="[null]"
- />
-
-
- <!-- old closed issues on file and project -->
- <issues id="1"
- kee="ISSUE-1"
- component_uuid="100"
- project_uuid="1"
- status="CLOSED"
- issue_close_date="1262300400000"
- resolution="FIXED"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1400000000000"
- locations="[null]"
- issue_type="[null]"/>
- <issue_changes id="1"
- kee="[null]"
- issue_key="ISSUE-1"
- created_at="[null]"
- updated_at="[null]"
- user_login="admin_uuid"
- change_type="comment"
- change_data="abc"
- issue_change_creation_date="[null]"/>
-
- <issues id="2"
- kee="ISSUE-2"
- component_uuid="1"
- project_uuid="1"
- status="CLOSED"
- issue_close_date="1262300400000"
- resolution="FIXED"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1400000000000"
- locations="[null]"
- issue_type="[null]"/>
- <issue_changes id="2"
- kee="[null]"
- issue_key="ISSUE-2"
- created_at="[null]"
- updated_at="[null]"
- user_login="admin_uuid"
- change_type="comment"
- change_data="abc"
- issue_change_creation_date="[null]"/>
-
-
- <!-- old open issues -->
- <issues id="3"
- kee="ISSUE-3"
- component_uuid="1"
- project_uuid="1"
- status="OPEN"
- issue_close_date="[null]"
- resolution="[null]"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1400000000000"
- locations="[null]"
- issue_type="[null]"/>
- <issue_changes id="3"
- kee="[null]"
- issue_key="ISSUE-3"
- created_at="[null]"
- updated_at="[null]"
- user_login="admin_uuid"
- change_type="comment"
- change_data="abc"
- issue_change_creation_date="[null]"/>
-
- <!-- recent open and closed issues -->
- <issues id="4"
- kee="ISSUE-4"
- component_uuid="100"
- project_uuid="1"
- status="OPEN"
- issue_close_date="[null]"
- resolution="[null]"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1400000000000"
- locations="[null]"
- issue_type="[null]"/>
- <issue_changes id="4"
- kee="[null]"
- issue_key="ISSUE-4"
- created_at="[null]"
- updated_at="[null]"
- user_login="admin_uuid"
- change_type="comment"
- change_data="abc"
- issue_change_creation_date="[null]"/>
-
- <issues id="5"
- kee="ISSUE-5"
- component_uuid="100"
- project_uuid="1"
- status="CLOSED"
- issue_close_date="1735686000000"
- resolution="FIXED"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1400000000000"
- locations="[null]"
- issue_type="[null]"/>
- <issue_changes id="5"
- kee="[null]"
- issue_key="ISSUE-5"
- created_at="[null]"
- updated_at="[null]"
- user_login="admin_uuid"
- change_type="comment"
- change_data="abc"
- issue_change_creation_date="[null]"/>
-
-</dataset>
+++ /dev/null
-<dataset>
-
- <projects organization_uuid="org1"
- uuid="P1"
- uuid_path="NOT_USED"
- enabled="[true]"
- root_id="[null]"
- created_at="[null]"
- long_name="[null]"
- scope="PRJ"
- qualifier="TRK"
- kee="project"
- name="project"
- description="[null]"
- private="[false]"
- language="java"
- copy_component_uuid="[null]"
- developer_uuid="[null]"
- authorization_updated_at="[null]"
- id="1"/>
-
- <snapshots id="1"
- uuid="u1"
- project_id="1"
- status="P"
- islast="[true]"
- purge_status="[null]"
- period1_mode="[null]"
- period1_param="[null]"
- period1_date="[null]"
- period2_mode="[null]"
- period2_param="[null]"
- period2_date="[null]"
- period3_mode="[null]"
- period3_param="[null]"
- period3_date="[null]"
- period4_mode="[null]"
- period4_param="[null]"
- period4_date="[null]"
- period5_mode="[null]"
- period5_param="[null]"
- period5_date="[null]"
- created_at="1228222680000"
- build_date="1228222680000"
- version="[null]"
- />
-
- <!-- old closed issues on file and project -> to be purged -->
- <!--
- <issues id="1" kee="ISSUE-1"
- component_uuid="100"
- project_uuid="P1"
- status="CLOSED"
- issue_close_date="1262300400000"
- resolution="FIXED" line="200" severity="BLOCKER" reporter="[null]" assignee="arthur" rule_id="500" manual_severity="[false]"
- message="[null]" action_plan_key="[null]" gap="[null]" effort="[null]" issue_attributes="[null]" checksum="[null]" author_login="[null]"
- updated_at="[null]" issue_creation_date="1366063200000" issue_update_date="1366063200000" created_at="2013-04-16" locations="[null]"/>
- <issue_changes id="1" kee="[null]" issue_key="ISSUE-1" created_at="[null]" updated_at="[null]" user_login="admin" change_type="comment" change_data="abc" issue_change_creation_date="[null]"/>
-
- <issues id="2" kee="ISSUE-2"
- component_uuid="1"
- project_uuid="P1"
- status="CLOSED"
- issue_close_date="1262300400000"
- resolution="FIXED" line="200" severity="BLOCKER" reporter="[null]" assignee="arthur" rule_id="500" manual_severity="[false]"
- message="[null]" action_plan_key="[null]" gap="[null]" effort="[null]" issue_attributes="[null]" checksum="[null]" author_login="[null]"
- updated_at="[null]" issue_creation_date="1366063200000" issue_update_date="1366063200000" created_at="2013-04-16" locations="[null]"/>
- <issue_changes id="2" kee="[null]" issue_key="ISSUE-2" created_at="[null]" updated_at="[null]" user_login="admin" change_type="comment" change_data="abc" issue_change_creation_date="[null]"/>
- -->
-
- <!-- old open issues -> do not purge -->
- <issues id="3"
- kee="ISSUE-3"
- component_uuid="1"
- project_uuid="P1"
- status="OPEN"
- issue_close_date="[null]"
- resolution="[null]"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- tags="[null]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1400000000000"
- locations="[null]"
- issue_type="[null]"/>
- <issue_changes id="3"
- kee="[null]"
- issue_key="ISSUE-3"
- created_at="[null]"
- updated_at="[null]"
- user_login="admin_uuid"
- change_type="comment"
- change_data="abc"
- issue_change_creation_date="[null]"/>
-
- <!-- recent open and closed issues -> do not purge -->
- <issues id="4"
- kee="ISSUE-4"
- component_uuid="100"
- project_uuid="P1"
- status="OPEN"
- issue_close_date="[null]"
- resolution="[null]"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- tags="[null]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1400000000000"
- locations="[null]"
- issue_type="[null]"/>
- <issue_changes id="4"
- kee="[null]"
- issue_key="ISSUE-4"
- created_at="[null]"
- updated_at="[null]"
- user_login="admin_uuid"
- change_type="comment"
- change_data="abc"
- issue_change_creation_date="[null]"/>
-
- <issues id="5"
- kee="ISSUE-5"
- component_uuid="100"
- project_uuid="P1"
- status="CLOSED"
- issue_close_date="1735686000000"
- resolution="FIXED"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- tags="[null]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1400000000000"
- locations="[null]"
- issue_type="[null]"/>
- <issue_changes id="5"
- kee="[null]"
- issue_key="ISSUE-5"
- created_at="[null]"
- updated_at="[null]"
- user_login="admin_uuid"
- change_type="comment"
- change_data="abc"
- issue_change_creation_date="[null]"/>
-
-</dataset>
+++ /dev/null
-<dataset>
-
- <projects organization_uuid="org1"
- uuid="P1"
- uuid_path="NOT_USED"
- enabled="[true]"
- root_uuid="P1"
- project_uuid="P1"
- created_at="[null]"
- long_name="[null]"
- scope="PRJ"
- qualifier="TRK"
- kee="project"
- name="project"
- description="[null]"
- private="[false]"
- language="java"
- copy_component_uuid="[null]"
- developer_uuid="[null]"
- authorization_updated_at="[null]"
- id="1"/>
-
- <snapshots id="1"
- uuid="u1"
- component_uuid="P1"
- status="P"
- islast="[true]"
- purge_status="[null]"
- period1_mode="[null]"
- period1_param="[null]"
- period1_date="[null]"
- period2_mode="[null]"
- period2_param="[null]"
- period2_date="[null]"
- period3_mode="[null]"
- period3_param="[null]"
- period3_date="[null]"
- period4_mode="[null]"
- period4_param="[null]"
- period4_date="[null]"
- period5_mode="[null]"
- period5_param="[null]"
- period5_date="[null]"
- created_at="1228222680000"
- build_date="1228222680000"
- version="[null]"
- />
-
- <!-- old closed issues on file and project -> to be purged -->
- <issues id="1"
- kee="ISSUE-1"
- component_uuid="100"
- project_uuid="P1"
- status="CLOSED"
- issue_close_date="1262300400000"
- resolution="FIXED"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1400000000000"
- locations="[null]"
- issue_type="[null]"/>
- <issue_changes id="1"
- kee="[null]"
- issue_key="ISSUE-1"
- created_at="[null]"
- updated_at="[null]"
- user_login="admin_uuid"
- change_type="comment"
- change_data="abc"
- issue_change_creation_date="[null]"/>
-
- <issues id="2"
- kee="ISSUE-2"
- component_uuid="1"
- project_uuid="P1"
- status="CLOSED"
- issue_close_date="1262300400000"
- resolution="FIXED"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1400000000000"
- locations="[null]"/>
- <issue_changes id="2"
- kee="[null]"
- issue_key="ISSUE-2"
- created_at="[null]"
- updated_at="[null]"
- user_login="admin_uuid"
- change_type="comment"
- change_data="abc"
- issue_change_creation_date="[null]"/>
-
-
- <!-- old open issues -> do not purge -->
- <issues id="3"
- kee="ISSUE-3"
- component_uuid="1"
- project_uuid="P1"
- status="OPEN"
- issue_close_date="[null]"
- resolution="[null]"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1400000000000"
- locations="[null]"
- issue_type="[null]"/>
- <issue_changes id="3"
- kee="[null]"
- issue_key="ISSUE-3"
- created_at="[null]"
- updated_at="[null]"
- user_login="admin_uuid"
- change_type="comment"
- change_data="abc"
- issue_change_creation_date="[null]"/>
-
- <!-- recent open and closed issues -> do not purge -->
- <issues id="4"
- kee="ISSUE-4"
- component_uuid="100"
- project_uuid="P1"
- status="OPEN"
- issue_close_date="[null]"
- resolution="[null]"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1400000000000"
- locations="[null]"
- issue_type="[null]"/>
- <issue_changes id="4"
- kee="[null]"
- issue_key="ISSUE-4"
- created_at="[null]"
- updated_at="[null]"
- user_login="admin_uuid"
- change_type="comment"
- change_data="abc"
- issue_change_creation_date="[null]"/>
-
- <issues id="5"
- kee="ISSUE-5"
- component_uuid="100"
- project_uuid="P1"
- status="CLOSED"
- issue_close_date="1735686000000"
- resolution="FIXED"
- line="200"
- severity="BLOCKER"
- reporter="[null]"
- assignee="arthur"
- rule_id="500"
- manual_severity="[false]"
- message="[null]"
- action_plan_key="[null]"
- gap="[null]"
- effort="[null]"
- issue_attributes="[null]"
- checksum="[null]"
- author_login="[null]"
- updated_at="[null]"
- issue_creation_date="1366063200000"
- issue_update_date="1366063200000"
- created_at="1400000000000"
- locations="[null]"
- issue_type="[null]"/>
- <issue_changes id="5"
- kee="[null]"
- issue_key="ISSUE-5"
- created_at="[null]"
- updated_at="[null]"
- user_login="admin_uuid"
- change_type="comment"
- change_data="abc"
- issue_change_creation_date="[null]"/>
-
-</dataset>
import java.util.Collection;
import java.util.Date;
+import java.util.List;
+import java.util.Map;
import org.junit.Test;
import org.sonar.api.rule.RuleKey;
import org.sonar.api.rules.Rule;
import org.sonar.db.component.ComponentDto;
import org.sonar.db.issue.IssueDto;
import org.sonar.db.issue.IssueMapper;
+import org.sonar.db.rule.RuleDefinitionDto;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.sonar.db.component.ComponentTesting.newFileDto;
+import static org.sonar.db.component.ComponentTesting.newModuleDto;
public class IssueStorageTest {
@org.junit.Rule
public DbTester db = DbTester.create(System2.INSTANCE);
- private IssueChangeContext context = IssueChangeContext.createUser(new Date(system2.now()), "user_uuid");
-
private DbClient dbClient = db.getDbClient();
@Test
.setProjectUuid("uuid-10")
.setComponentKey("struts:Action");
+ assertThat(db.countRowsOfTable("issues")).isEqualTo(0);
+ assertThat(db.countRowsOfTable("issue_changes")).isEqualTo(0);
+
saver.save(issue);
- db.assertDbUnit(getClass(), "should_insert_new_issues-result.xml",
- new String[] {"id", "created_at", "updated_at", "issue_change_creation_date"}, "issues", "issue_changes");
+ assertThat(db.countRowsOfTable("issues")).isEqualTo(1);
+ assertThat(db.countRowsOfTable("issue_changes")).isEqualTo(1);
}
@Test
.setProjectUuid("uuid-10")
.setComponentKey("struts:Action");
+ assertThat(db.countRowsOfTable("issues")).isEqualTo(0);
+ assertThat(db.countRowsOfTable("issue_changes")).isEqualTo(0);
+
saver.save(db.getSession(), issue);
db.getSession().commit();
- db.assertDbUnit(getClass(), "should_insert_new_issues-result.xml",
- new String[] {"id", "created_at", "updated_at", "issue_change_creation_date"}, "issues", "issue_changes");
+ assertThat(db.countRowsOfTable("issues")).isEqualTo(1);
+ assertThat(db.countRowsOfTable("issue_changes")).isEqualTo(1);
}
@Test
.setComponentUuid("component-uuid")
.setProjectUuid("project-uuid");
+ assertThat(db.countRowsOfTable("issues")).isEqualTo(0);
+ assertThat(db.countRowsOfTable("issue_changes")).isEqualTo(0);
+
saver.save(db.getSession(), issue);
db.getSession().commit();
- db.assertDbUnit(getClass(), "should_insert_new_issues-result.xml", new String[] {"id", "created_at", "updated_at",
- "issue_change_creation_date"}, "issues", "issue_changes");
+ assertThat(db.countRowsOfTable("issues")).isEqualTo(1);
+ assertThat(db.countRowsOfTable("issue_changes")).isEqualTo(1);
}
@Test
public void batch_update_issues() {
- db.prepareDbUnit(getClass(), "should_update_issues.xml");
-
FakeBatchSaver saver = new FakeBatchSaver(dbClient, new FakeRuleFinder());
- DefaultIssueComment comment = DefaultIssueComment.create("ABCDE", "user_uuid", "the comment");
- // override generated key
- comment.setKey("FGHIJ");
+ RuleDefinitionDto rule = db.rules().insert();
+ ComponentDto project = db.components().insertMainBranch();
+ ComponentDto module = db.components().insertComponent(newModuleDto(project));
+ ComponentDto file = db.components().insertComponent(newFileDto(module));
Date date = DateUtils.parseDateTime("2013-05-18T12:00:00+0000");
DefaultIssue issue = new DefaultIssue()
.setKey("ABCDE")
.setType(RuleType.BUG)
+ .setNew(true)
+ .setRuleKey(rule.getKey())
+ .setProjectUuid(project.uuid())
+ .setComponentUuid(file.uuid())
+ .setLine(5000)
+ .setEffort(Duration.create(10L))
+ .addComment(DefaultIssueComment.create("ABCDE", "user_uuid", "first comment"))
+ .setResolution("OPEN")
+ .setStatus("OPEN")
+ .setSeverity("BLOCKER")
+ .setAttribute("foo", "bar")
+ .setCreationDate(date)
+ .setUpdateDate(date)
+ .setCloseDate(date);
+
+ saver.save(issue);
+
+ assertThat(db.countRowsOfTable("issues")).isEqualTo(1);
+ assertThat(db.countRowsOfTable("issue_changes")).isEqualTo(1);
+
+ DefaultIssue updated = new DefaultIssue()
+ .setKey(issue.key())
+ .setType(RuleType.VULNERABILITY)
.setNew(false)
.setChanged(true)
// updated fields
- .setLine(5000)
- .setEffort(Duration.create(10L))
+ .setLine(issue.getLine() + 10)
+ .setProjectUuid("foo")
+ .setEffort(Duration.create(issue.effortInMinutes() + 10L))
.setChecksum("FFFFF")
.setAuthorLogin("simon")
.setAssigneeUuid("loic")
- .setFieldChange(context, "severity", "INFO", "BLOCKER")
+ .setFieldChange(IssueChangeContext.createUser(new Date(), "user_uuid"), "severity", "INFO", "BLOCKER")
+ .addComment(DefaultIssueComment.create("ABCDE", "user_uuid", "the comment"))
.setResolution("FIXED")
.setStatus("RESOLVED")
- .setSeverity("BLOCKER")
- .setAttribute("foo", "bar")
- .addComment(comment)
- .setCreationDate(date)
- .setUpdateDate(date)
- .setCloseDate(date)
- .setComponentUuid("uuid-100")
- .setProjectUuid("uuid-10")
+ .setSeverity("MAJOR")
+ .setAttribute("fox", "bax")
+ .setCreationDate(DateUtils.addDays(date, 1))
+ .setUpdateDate(DateUtils.addDays(date, 1))
+ .setCloseDate(DateUtils.addDays(date, 1))
// unmodifiable fields
.setRuleKey(RuleKey.of("xxx", "unknown"))
- .setComponentKey("not:a:component");
-
- saver.save(issue);
-
- db.assertDbUnit(getClass(), "should_update_issues-result.xml", new String[] {"id", "created_at", "updated_at", "issue_change_creation_date"}, "issues", "issue_changes");
+ .setComponentKey("struts:Action")
+ .setProjectKey("struts");
+
+ saver.save(updated);
+
+ assertThat(db.countRowsOfTable("issues")).isEqualTo(1);
+ assertThat(db.selectFirst("select * from issues"))
+ .containsEntry("ASSIGNEE", updated.assignee())
+ .containsEntry("AUTHOR_LOGIN", updated.authorLogin())
+ .containsEntry("CHECKSUM", updated.checksum())
+ .containsEntry("COMPONENT_UUID", issue.componentUuid())
+ .containsEntry("EFFORT", updated.effortInMinutes())
+ .containsEntry("ISSUE_ATTRIBUTES", "fox=bax")
+ .containsEntry("ISSUE_TYPE", (byte) 3)
+ .containsEntry("KEE", issue.key())
+ .containsEntry("LINE", (long) updated.line())
+ .containsEntry("PROJECT_UUID", updated.projectUuid())
+ .containsEntry("RESOLUTION", updated.resolution())
+ .containsEntry("STATUS", updated.status())
+ .containsEntry("SEVERITY", updated.severity());
+
+ List<Map<String, Object>> rows = db.select("select * from issue_changes order by id");
+ assertThat(rows).hasSize(3);
+ assertThat(rows.get(0))
+ .extracting("CHANGE_DATA", "CHANGE_TYPE", "USER_LOGIN")
+ .containsExactlyInAnyOrder("first comment", "comment", "user_uuid");
+ assertThat(rows.get(1))
+ .extracting("CHANGE_DATA", "CHANGE_TYPE", "USER_LOGIN")
+ .containsExactlyInAnyOrder("the comment", "comment", "user_uuid");
+ assertThat(rows.get(2))
+ .extracting("CHANGE_DATA", "CHANGE_TYPE", "USER_LOGIN")
+ .containsExactlyInAnyOrder("severity=INFO|BLOCKER", "diff", "user_uuid");
}
@Test
public void server_update_issues() {
- db.prepareDbUnit(getClass(), "should_update_issues.xml");
-
ComponentDto project = new ComponentDto().setId(10L).setUuid("whatever-uuid");
ComponentDto component = new ComponentDto().setId(100L).setUuid("whatever-uuid-2");
FakeServerSaver saver = new FakeServerSaver(dbClient, new FakeRuleFinder(), component, project);
- DefaultIssueComment comment = DefaultIssueComment.create("ABCDE", "user_uuid", "the comment");
- // override generated key
- comment.setKey("FGHIJ");
+ RuleDefinitionDto rule = db.rules().insert();
Date date = DateUtils.parseDateTime("2013-05-18T12:00:00+0000");
DefaultIssue issue = new DefaultIssue()
.setKey("ABCDE")
.setType(RuleType.BUG)
+ .setNew(true)
+ .setRuleKey(rule.getKey())
+ .setProjectUuid(project.uuid())
+ .setComponentUuid(component.uuid())
+ .setLine(5000)
+ .setEffort(Duration.create(10L))
+ .addComment(DefaultIssueComment.create("ABCDE", "user_uuid", "first comment"))
+ .setResolution("OPEN")
+ .setStatus("OPEN")
+ .setSeverity("BLOCKER")
+ .setAttribute("foo", "bar")
+ .setCreationDate(date)
+ .setUpdateDate(date)
+ .setCloseDate(date);
+
+ saver.save(issue);
+
+ assertThat(db.countRowsOfTable("issues")).isEqualTo(1);
+ assertThat(db.countRowsOfTable("issue_changes")).isEqualTo(1);
+
+ DefaultIssue updated = new DefaultIssue()
+ .setKey(issue.key())
+ .setType(RuleType.VULNERABILITY)
.setNew(false)
.setChanged(true)
// updated fields
- .setLine(5000)
- .setEffort(Duration.create(10L))
+ .setLine(issue.getLine() + 10)
+ .setProjectUuid("foo")
+ .setEffort(Duration.create(issue.effortInMinutes() + 10L))
.setChecksum("FFFFF")
.setAuthorLogin("simon")
.setAssigneeUuid("loic")
- .setFieldChange(context, "severity", "INFO", "BLOCKER")
+ .setFieldChange(IssueChangeContext.createUser(new Date(), "user_uuid"), "severity", "INFO", "BLOCKER")
+ .addComment(DefaultIssueComment.create("ABCDE", "user_uuid", "the comment"))
.setResolution("FIXED")
.setStatus("RESOLVED")
- .setSeverity("BLOCKER")
- .setAttribute("foo", "bar")
- .addComment(comment)
- .setCreationDate(date)
- .setUpdateDate(date)
- .setCloseDate(date)
- .setProjectUuid("uuid-10")
+ .setSeverity("MAJOR")
+ .setAttribute("fox", "bax")
+ .setCreationDate(DateUtils.addDays(date, 1))
+ .setUpdateDate(DateUtils.addDays(date, 1))
+ .setCloseDate(DateUtils.addDays(date, 1))
// unmodifiable fields
.setRuleKey(RuleKey.of("xxx", "unknown"))
- .setComponentKey("not:a:component");
-
- saver.save(issue);
-
- db.assertDbUnit(getClass(), "should_update_issues-result.xml", new String[] {"id", "created_at", "updated_at", "issue_change_creation_date"}, "issues", "issue_changes");
+ .setComponentKey("struts:Action")
+ .setProjectKey("struts");
+
+ saver.save(updated);
+
+ assertThat(db.countRowsOfTable("issues")).isEqualTo(1);
+ assertThat(db.selectFirst("select * from issues"))
+ .containsEntry("ASSIGNEE", updated.assignee())
+ .containsEntry("AUTHOR_LOGIN", updated.authorLogin())
+ .containsEntry("CHECKSUM", updated.checksum())
+ .containsEntry("COMPONENT_UUID", issue.componentUuid())
+ .containsEntry("EFFORT", updated.effortInMinutes())
+ .containsEntry("ISSUE_ATTRIBUTES", "fox=bax")
+ .containsEntry("ISSUE_TYPE", (byte) 3)
+ .containsEntry("KEE", issue.key())
+ .containsEntry("LINE", (long) updated.line())
+ .containsEntry("PROJECT_UUID", updated.projectUuid())
+ .containsEntry("RESOLUTION", updated.resolution())
+ .containsEntry("STATUS", updated.status())
+ .containsEntry("SEVERITY", updated.severity());
+
+ List<Map<String, Object>> rows = db.select("select * from issue_changes order by id");
+ assertThat(rows).hasSize(3);
+ assertThat(rows.get(0))
+ .extracting("CHANGE_DATA", "CHANGE_TYPE", "USER_LOGIN")
+ .containsExactlyInAnyOrder("first comment", "comment", "user_uuid");
+ assertThat(rows.get(1))
+ .extracting("CHANGE_DATA", "CHANGE_TYPE", "USER_LOGIN")
+ .containsExactlyInAnyOrder("the comment", "comment", "user_uuid");
+ assertThat(rows.get(2))
+ .extracting("CHANGE_DATA", "CHANGE_TYPE", "USER_LOGIN")
+ .containsExactlyInAnyOrder("severity=INFO|BLOCKER", "diff", "user_uuid");
}
static class FakeBatchSaver extends IssueStorage {
import java.util.Collection;
import java.util.Date;
+import java.util.List;
+import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.sonar.api.rule.RuleKey;
import org.sonar.core.issue.IssueChangeContext;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
+import org.sonar.db.component.ComponentDto;
+import org.sonar.db.rule.RuleDefinitionDto;
import org.sonar.server.issue.index.IssueIndexer;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import static org.sonar.db.component.ComponentTesting.newFileDto;
+import static org.sonar.db.component.ComponentTesting.newModuleDto;
public class ServerIssueStorageTest {
@Test
public void should_insert_new_issues() {
- dbTester.prepareDbUnit(getClass(), "should_insert_new_issues.xml");
+ RuleDefinitionDto rule = dbTester.rules().insert();
+ ComponentDto project = dbTester.components().insertMainBranch();
+ ComponentDto module = dbTester.components().insertComponent(newModuleDto(project));
+ ComponentDto file = dbTester.components().insertComponent(newFileDto(module));
- DefaultIssueComment comment = DefaultIssueComment.create("ABCDE", "user_uuid", "the comment");
+ String issueKey = "ABCDE";
+ DefaultIssueComment comment = DefaultIssueComment.create(issueKey, "user_uuid", "the comment");
// override generated key
comment.setKey("FGHIJ");
Date date = DateUtils.parseDateTime("2013-05-18T12:00:00+0000");
DefaultIssue issue = new DefaultIssue()
- .setKey("ABCDE")
+ .setKey(issueKey)
.setType(RuleType.BUG)
.setNew(true)
-
- .setRuleKey(RuleKey.of("squid", "AvoidCycle"))
- .setProjectUuid("ABCD")
- .setComponentUuid("BCDE")
+ .setRuleKey(rule.getKey())
+ .setProjectUuid(project.uuid())
+ .setComponentUuid(file.uuid())
.setLine(5000)
.setEffort(Duration.create(10L))
.setResolution("OPEN")
underTest.save(issue);
- dbTester.assertDbUnit(getClass(), "should_insert_new_issues-result.xml",
- new String[] {"id", "created_at", "updated_at", "issue_change_creation_date"}, "issues", "issue_changes");
+ assertThat(dbTester.countRowsOfTable("issues")).isEqualTo(1);
+ assertThat(dbTester.selectFirst("select * from issues"))
+ .containsEntry("PROJECT_UUID", project.uuid())
+ .containsEntry("COMPONENT_UUID", file.uuid())
+ .containsEntry("KEE", issue.key())
+ .containsEntry("RESOLUTION", issue.resolution())
+ .containsEntry("STATUS", issue.status())
+ .containsEntry("SEVERITY", issue.severity());
+
+ assertThat(dbTester.countRowsOfTable("issue_changes")).isEqualTo(1);
+ assertThat(dbTester.selectFirst("select * from issue_changes"))
+ .containsEntry("KEE", comment.key())
+ .containsEntry("ISSUE_KEY", issue.key())
+ .containsEntry("CHANGE_DATA", comment.markdownText())
+ .containsEntry("USER_LOGIN", comment.userUuid());
}
@Test
public void should_update_issues() {
- dbTester.prepareDbUnit(getClass(), "should_update_issues.xml");
-
- IssueChangeContext context = IssueChangeContext.createUser(new Date(), "user_uuid");
-
- DefaultIssueComment comment = DefaultIssueComment.create("ABCDE", "user_uuid", "the comment");
- // override generated key
- comment.setKey("FGHIJ");
+ RuleDefinitionDto rule = dbTester.rules().insert();
+ ComponentDto project = dbTester.components().insertMainBranch();
+ ComponentDto module = dbTester.components().insertComponent(newModuleDto(project));
+ ComponentDto file = dbTester.components().insertComponent(newFileDto(module));
Date date = DateUtils.parseDateTime("2013-05-18T12:00:00+0000");
DefaultIssue issue = new DefaultIssue()
.setKey("ABCDE")
.setType(RuleType.BUG)
+ .setNew(true)
+ .setRuleKey(rule.getKey())
+ .setProjectUuid(project.uuid())
+ .setComponentUuid(file.uuid())
+ .setLine(5000)
+ .setEffort(Duration.create(10L))
+ .setResolution("OPEN")
+ .setStatus("OPEN")
+ .setSeverity("BLOCKER")
+ .setAttribute("foo", "bar")
+ .setCreationDate(date)
+ .setUpdateDate(date)
+ .setCloseDate(date);
+
+ underTest.save(issue);
+
+ assertThat(dbTester.countRowsOfTable("issues")).isEqualTo(1);
+ assertThat(dbTester.countRowsOfTable("issue_changes")).isEqualTo(0);
+
+ DefaultIssue updated = new DefaultIssue()
+ .setKey(issue.key())
+ .setType(RuleType.VULNERABILITY)
.setNew(false)
.setChanged(true)
// updated fields
- .setLine(5000)
- .setProjectUuid("CDEF")
- .setEffort(Duration.create(10L))
+ .setLine(issue.getLine() + 10)
+ .setProjectUuid("foo")
+ .setEffort(Duration.create(issue.effortInMinutes() + 10L))
.setChecksum("FFFFF")
.setAuthorLogin("simon")
.setAssigneeUuid("loic")
- .setFieldChange(context, "severity", "INFO", "BLOCKER")
+ .setFieldChange(IssueChangeContext.createUser(new Date(), "user_uuid"), "severity", "INFO", "BLOCKER")
+ .addComment(DefaultIssueComment.create("ABCDE", "user_uuid", "the comment"))
.setResolution("FIXED")
.setStatus("RESOLVED")
- .setSeverity("BLOCKER")
- .setAttribute("foo", "bar")
- .addComment(comment)
- .setCreationDate(date)
- .setUpdateDate(date)
- .setCloseDate(date)
+ .setSeverity("MAJOR")
+ .setAttribute("fox", "bax")
+ .setCreationDate(DateUtils.addDays(date, 1))
+ .setUpdateDate(DateUtils.addDays(date, 1))
+ .setCloseDate(DateUtils.addDays(date, 1))
// unmodifiable fields
.setRuleKey(RuleKey.of("xxx", "unknown"))
.setComponentKey("struts:Action")
.setProjectKey("struts");
- underTest.save(issue);
-
- dbTester.assertDbUnit(getClass(), "should_update_issues-result.xml",
- new String[] {"id", "created_at", "updated_at", "issue_change_creation_date"}, "issues", "issue_changes");
+ underTest.save(updated);
+
+ assertThat(dbTester.countRowsOfTable("issues")).isEqualTo(1);
+ assertThat(dbTester.selectFirst("select * from issues"))
+ .containsEntry("ASSIGNEE", updated.assignee())
+ .containsEntry("AUTHOR_LOGIN", updated.authorLogin())
+ .containsEntry("CHECKSUM", updated.checksum())
+ .containsEntry("COMPONENT_UUID", issue.componentUuid())
+ .containsEntry("EFFORT", updated.effortInMinutes())
+ .containsEntry("ISSUE_ATTRIBUTES", "fox=bax")
+ .containsEntry("ISSUE_TYPE", (byte) 3)
+ .containsEntry("KEE", issue.key())
+ .containsEntry("LINE", (long) updated.line())
+ .containsEntry("PROJECT_UUID", updated.projectUuid())
+ .containsEntry("RESOLUTION", updated.resolution())
+ .containsEntry("STATUS", updated.status())
+ .containsEntry("SEVERITY", updated.severity());
+
+ List<Map<String, Object>> rows = dbTester.select("select * from issue_changes order by id");
+ assertThat(rows).hasSize(2);
+ assertThat(rows.get(0))
+ .extracting("CHANGE_DATA", "CHANGE_TYPE", "USER_LOGIN")
+ .containsExactlyInAnyOrder("the comment", "comment", "user_uuid");
+ assertThat(rows.get(1))
+ .extracting("CHANGE_DATA", "CHANGE_TYPE", "USER_LOGIN")
+ .containsExactlyInAnyOrder("severity=INFO|BLOCKER", "diff", "user_uuid");
}
static class FakeRuleFinder implements RuleFinder {
+++ /dev/null
-<dataset>
- <issues id="1" kee="ABCDE" resolution="OPEN" status="OPEN" severity="BLOCKER" manual_severity="[false]"
- assignee="[null]"
- author_login="[null]"
- checksum="[null]"
- gap="[null]"
- effort="10"
- message="[null]"
- line="5000"
- component_uuid="uuid-100"
- project_uuid="uuid-10"
- rule_id="200"
- created_at="[null]"
- updated_at="[null]"
- reporter="[null]"
- issue_attributes="foo=bar"
- tags="[null]"
- action_plan_key="[null]"
- issue_creation_date="1368878400000"
- issue_update_date="1368878400000"
- issue_close_date="1368878400000"
- locations="[null]"
- issue_type="2"
- />
-
- <issue_changes id="1" kee="FGHIJ" issue_key="ABCDE" change_type="comment" user_login="user_uuid"
- change_data="the comment"
- created_at="[null]" updated_at="[null]" issue_change_creation_date="[null]"/>
-
-</dataset>
+++ /dev/null
-<dataset>
- <issues id="1"
- kee="ABCDE"
- resolution="FIXED"
- status="RESOLVED"
- severity="BLOCKER"
- manual_severity="[false]"
- assignee="loic"
- author_login="simon"
- checksum="FFFFF"
- gap="[null]"
- effort="10"
- message="[null]"
- line="5000"
- component_uuid="uuid-100"
- project_uuid="uuid-10"
- rule_id="200"
- created_at="2013-05-18"
- updated_at="2013-05-18"
- reporter="[null]"
- issue_attributes="foo=bar"
- tags="[null]"
- action_plan_key="[null]"
- issue_creation_date="1368878400000"
- issue_update_date="1368878400000"
- issue_close_date="1368878400000"
- locations="[null]"
- issue_type="2"
- />
-
- <issue_changes id="1" kee="FGHIJ" issue_key="ABCDE" change_type="comment" user_login="user_uuid"
- change_data="the comment" created_at="[null]" updated_at="[null]" issue_change_creation_date="[null]"/>
- <issue_changes id="2" kee="[null]" issue_key="ABCDE" change_type="diff" user_login="user_uuid"
- change_data="severity=INFO|BLOCKER" created_at="[null]" updated_at="[null]"
- issue_change_creation_date="[null]"/>
-</dataset>
+++ /dev/null
-<dataset>
- <issues id="1"
- kee="ABCDE"
- resolution="OPEN"
- status="OPEN"
- severity="BLOCKER"
- manual_severity="[false]"
- assignee="loic"
- author_login="simon"
- checksum="FFFFF"
- gap="[null]"
- effort="[null]"
- message="[null]"
- line="3000"
- component_uuid="uuid-100"
- project_uuid="uuid-11"
- rule_id="200"
- created_at="1400000000000"
- updated_at="1400000000000"
- reporter="[null]"
- issue_attributes="foo=bar"
- tags="[null]"
- action_plan_key="[null]"
- issue_creation_date="1262300400000"
- issue_update_date="1265065200000"
- issue_close_date="[null]"
- locations="[null]"
- issue_type="2"
- />
-</dataset>
+++ /dev/null
-<dataset>
- <issues id="1" kee="ABCDE" resolution="OPEN" status="OPEN" severity="BLOCKER" manual_severity="[false]"
- assignee="[null]"
- author_login="[null]"
- checksum="[null]"
- gap="[null]"
- effort="10"
- message="[null]"
- line="5000"
- component_uuid="BCDE"
- project_uuid="ABCD"
- rule_id="200"
- created_at="1000000000"
- updated_at="1000000000"
- reporter="[null]"
- issue_attributes="foo=bar"
- tags="[null]"
- action_plan_key="[null]"
- issue_creation_date="1368878400000"
- issue_update_date="1368878400000"
- issue_close_date="1368878400000"
- locations="[null]"
- issue_type="2"
- />
-
- <issue_changes id="1" kee="FGHIJ" issue_key="ABCDE" change_type="comment" user_login="user_uuid"
- change_data="the comment"
- created_at="[null]" updated_at="[null]" issue_change_creation_date="[null]"/>
-
-</dataset>
+++ /dev/null
-<dataset>
-
- <organizations uuid="org1"
- kee="org1_key"
- name="org1_name"
- guarded="[false]"
- new_project_private="[false]"
- default_quality_gate_uuid="DEFAULT_QG"
- created_at="1000"
- updated_at="2000"/>
-
- <projects organization_uuid="org1"
- uuid="ABCD"
- uuid_path="NOT_USED"
- root_uuid="ABCD"
- project_uuid="ABCD"
- id="10"
- scope="PRJ"
- qualifier="TRK"
- kee="struts"
- name="Struts"
- private="[false]"/>
- <snapshots id="10"
- uuid="u10"
- component_uuid="ABCD"
- islast="[true]"/>
-
- <projects organization_uuid="org1"
- uuid="BCDE"
- uuid_path="NOT_USED"
- root_uuid="ABCD"
- project_uuid="ABCD"
- id="100"
- scope="FIL"
- qualifier="CLA"
- kee="struts:Action"
- name="Action"
- private="[false]"/>
- <snapshots id="100"
- uuid="u100"
- component_uuid="BCDE"
- islast="[true]"/>
-</dataset>
+++ /dev/null
-<dataset>
- <issues id="1"
- kee="ABCDE"
- resolution="FIXED"
- status="RESOLVED"
- severity="BLOCKER"
- manual_severity="[false]"
- assignee="loic"
- author_login="simon"
- checksum="FFFFF"
- gap="[null]"
- effort="10"
- message="[null]"
- line="5000"
- component_uuid="BCDE"
- project_uuid="CDEF"
- rule_id="200"
- created_at="1000000000"
- updated_at="2000000000"
- reporter="[null]"
- issue_attributes="foo=bar"
- tags="[null]"
- action_plan_key="[null]"
- issue_creation_date="1368878400000"
- issue_update_date="1368878400000"
- issue_close_date="1368878400000"
- locations="[null]"
- issue_type="2"
- />
-
- <issue_changes id="1"
- kee="FGHIJ"
- issue_key="ABCDE"
- change_type="comment"
- user_login="user_uuid"
- change_data="the comment"
- created_at="[null]"
- updated_at="[null]"
- issue_change_creation_date="[null]"/>
- <issue_changes id="2"
- kee="[null]"
- issue_key="ABCDE"
- change_type="diff"
- user_login="user_uuid"
- change_data="severity=INFO|BLOCKER"
- created_at="[null]"
- updated_at="[null]"
- issue_change_creation_date="[null]"/>
-</dataset>
+++ /dev/null
-<dataset>
-
- <organizations uuid="org1"
- kee="org1_key"
- name="org1_name"
- guarded="[false]"
- new_project_private="[false]"
- default_quality_gate_uuid="DEFAULT_QG"
- created_at="1000"
- updated_at="2000"/>
-
- <projects organization_uuid="org1"
- uuid="ABCD"
- uuid_path="NOT_USED"
- root_uuid="ABCD"
- project_uuid="ABCD"
- id="10"
- scope="PRJ"
- qualifier="TRK"
- kee="struts"
- name="Struts"
- private="[false]"/>
- <snapshots id="10"
- uuid="u10"
- component_uuid="ABCD"
- islast="[true]"/>
-
- <projects organization_uuid="org1"
- uuid="BCDE"
- uuid_path="NOT_USED"
- root_uuid="ABCD"
- project_uuid="ABCD"
- id="100"
- scope="FIL"
- qualifier="CLA"
- kee="struts:Action"
- name="Action"
- private="[false]"/>
- <snapshots id="100"
- uuid="u100"
- component_uuid="BCDE"
- islast="[true]"/>
-
- <issues id="1"
- kee="ABCDE"
- resolution="OPEN"
- status="OPEN"
- severity="BLOCKER"
- manual_severity="[false]"
- assignee="loic"
- author_login="simon"
- checksum="FFFFF"
- gap="[null]"
- effort="[null]"
- message="[null]"
- line="3000"
- component_uuid="BCDE"
- project_uuid="ABCD"
- rule_id="200"
- created_at="1000000000"
- updated_at="1000000000"
- reporter="[null]"
- issue_attributes="foo=bar"
- action_plan_key="[null]"
- issue_creation_date="1262300400000"
- issue_update_date="1265065200000"
- issue_close_date="[null]"
- locations="[null]"
- issue_type="[null]"
- />
-</dataset>