From 3136ecae882db65db856b5f6f9e0a19a9781763f Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Fri, 6 Apr 2018 17:22:28 +0200 Subject: [PATCH] Fix QA --- .../org/sonarqube/qa/util/QProfileTester.java | 10 +- .../qa/util/pageobjects/Navigation.java | 23 +- .../settings/PropertySetInput.java | 4 +- .../pageobjects/settings/SettingsPage.java | 14 +- .../qualitygate/ws/UpdateConditionAction.java | 3 +- .../main/js/apps/explore/ExploreProjects.tsx | 2 +- .../apps/projects/components/AllProjects.tsx | 27 +- .../components/AllProjectsContainer.tsx | 1 + .../components/__tests__/AllProjects-test.tsx | 20 +- .../SourceViewer/SourceViewerBase.tsx | 7 +- .../SourceViewer/components/LineNumber.tsx | 1 + .../SourceViewer/components/LineSCM.tsx | 1 + .../__snapshots__/LineNumber-test.tsx.snap | 6 + .../__snapshots__/LineSCM-test.tsx.snap | 18 + .../main/js/components/common/MultiSelect.tsx | 31 +- .../sonar-web/src/main/js/helpers/storage.ts | 43 +- tests/build.gradle | 6 +- .../v1-1000-lines/src/sample/Sample.xoo.scm | 2000 ++++++++-------- .../v2-1019-lines/src/sample/Sample.xoo.scm | 2038 ++++++++-------- .../v2-1020-lines/src/sample/Sample.xoo.scm | 2040 ++++++++--------- .../org/sonarqube/tests/Category6Suite.java | 4 +- .../PermissionTemplatePageTest.java | 4 +- .../sonarqube/tests/component/BranchTest.java | 2 +- .../tests/component/CodePageTest.java | 2 +- .../tests/component/ComponentsWsTest.java | 2 +- .../sonarqube/tests/component/ModuleTest.java | 18 +- .../tests/issue/IssueNotificationsTest.java | 331 +-- .../org/sonarqube/tests/issue/IssueSuite.java | 3 +- .../issue/OrganizationIssueAssignTest.java | 4 +- .../tests/issue/OrganizationIssueSuite.java | 2 + .../issue/OrganizationIssuesPageTest.java | 4 +- .../measure/ProjectActivityPageTest.java | 2 +- .../tests/measure/ProjectDashboardTest.java | 2 +- .../tests/organization/BillingTest.java | 3 +- .../tests/organization/OrganizationSuite.java | 2 + ...ite.java => OrganizationProjectSuite.java} | 33 +- .../tests/project/ProjectBadgesTest.java | 7 +- .../project/ProjectBulkDeletionPageTest.java | 2 +- .../project/ProjectBulkDeletionTest.java | 2 +- .../tests/project/ProjectDeletionTest.java | 4 +- .../tests/project/ProjectFilterTest.java | 2 +- .../project/ProjectKeyUpdatePageTest.java | 2 +- .../tests/project/ProjectKeyUpdateTest.java | 4 +- .../tests/project/ProjectLeakPageTest.java | 2 +- .../tests/project/ProjectLinksTest.java | 2 +- .../tests/project/ProjectListTest.java | 2 +- .../project/ProjectProvisioningTest.java | 4 +- .../tests/project/ProjectSearchTest.java | 2 +- .../tests/project/ProjectSettingsTest.java | 4 +- .../sonarqube/tests/project/ProjectSuite.java | 14 +- .../project/ProjectVisibilityPageTest.java | 2 +- .../project/ProjectsExplorePageTest.java | 168 ++ .../tests/project/ProjectsPageTest.java | 13 +- .../project/SonarCloudProjectBadgesTest.java | 2 +- ...tionQualityGateForSmallChangesetsTest.java | 71 +- .../OrganizationQualityGateSuite.java | 1 + .../tests/qualityGate/QualityGateTest.java | 7 +- .../tests/serverSystem/HttpHeadersTest.java | 11 +- .../tests/settings/ValidatorsTest.java | 6 +- .../tests/user/NotificationsWsTest.java | 4 +- .../tests/user/SonarCloudUserSuite.java | 3 +- .../tests/webhook/WebhooksSuite.java | 2 + 62 files changed, 3592 insertions(+), 3464 deletions(-) rename tests/src/test/java/org/sonarqube/tests/project/{SonarCloudProjectSuite.java => OrganizationProjectSuite.java} (56%) create mode 100644 tests/src/test/java/org/sonarqube/tests/project/ProjectsExplorePageTest.java diff --git a/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/QProfileTester.java b/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/QProfileTester.java index 2609faaa7c0..7378ffd1860 100644 --- a/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/QProfileTester.java +++ b/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/QProfileTester.java @@ -22,6 +22,7 @@ package org.sonarqube.qa.util; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; +import javax.annotation.Nullable; import org.assertj.core.api.Assertions; import org.sonarqube.ws.Common; import org.sonarqube.ws.Organizations.Organization; @@ -55,10 +56,15 @@ public class QProfileTester { } @SafeVarargs - public final QualityProfile createXooProfile(Organization organization, Consumer... populators) { + public final QualityProfile createXooProfile(Consumer... populators) { + return createXooProfile(null, populators); + } + + @SafeVarargs + public final QualityProfile createXooProfile(@Nullable Organization organization, Consumer... populators) { int id = ID_GENERATOR.getAndIncrement(); CreateRequest request = new CreateRequest() - .setOrganization(organization.getKey()) + .setOrganization(organization == null ? null : organization.getKey()) .setLanguage("xoo") .setName("Profile" + id); stream(populators).forEach(p -> p.accept(request)); diff --git a/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/pageobjects/Navigation.java b/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/pageobjects/Navigation.java index 073df461b8b..a0266da622a 100644 --- a/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/pageobjects/Navigation.java +++ b/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/pageobjects/Navigation.java @@ -55,7 +55,7 @@ public class Navigation { driver.manage().deleteAllCookies(); clearStorage(d -> d.getLocalStorage().clear()); clearStorage(d -> d.getSessionStorage().clear()); - clearStorage(d -> Selenide.clearBrowserLocalStorage()); + clearBrowserLocalStorage(); return Selenide.open(path, Navigation.class); } @@ -69,6 +69,19 @@ public class Navigation { } } + /** + * Do not call {@link #clearStorage(Consumer)} for {@link Selenide#clearBrowserLocalStorage} as it's failing on Firefox 46 + */ + private static void clearBrowserLocalStorage() { + try { + Selenide.clearBrowserLocalStorage(); + } catch (Exception e) { + // ignore, it may occur when the first test opens browser. No pages are loaded + // and local/session storages are not available yet. + // Example with Chrome: "Failed to read the 'localStorage' property from 'Window': Storage is disabled inside 'data:' URLs." + } + } + public Navigation openHome() { return open("/", Navigation.class); } @@ -85,10 +98,18 @@ public class Navigation { return open("/projects?" + query, ProjectsPage.class); } + public ProjectsPage openExploreProjects() { + return open("/explore/projects", ProjectsPage.class); + } + public IssuesPage openIssues() { return open("/issues", IssuesPage.class); } + public IssuesPage openExploreIssues() { + return open("/explore/issues", IssuesPage.class); + } + public IssuesPage openIssues(String organization) { return open("/organizations/" + organization + "/issues", IssuesPage.class); } diff --git a/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/pageobjects/settings/PropertySetInput.java b/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/pageobjects/settings/PropertySetInput.java index 759f7189a71..46f1ac6201a 100644 --- a/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/pageobjects/settings/PropertySetInput.java +++ b/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/pageobjects/settings/PropertySetInput.java @@ -40,8 +40,8 @@ public class PropertySetInput { } public PropertySetInput save() { - elt.find(".js-save-changes").click(); - elt.find(".js-save-changes").shouldNot(Condition.exist); + elt.find(".button-success").click(); + elt.find(".button-success").shouldNot(Condition.exist); return this; } } diff --git a/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/pageobjects/settings/SettingsPage.java b/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/pageobjects/settings/SettingsPage.java index 9bb53d9b50f..f55d3edfa9d 100644 --- a/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/pageobjects/settings/SettingsPage.java +++ b/server/sonar-qa-util/src/main/java/org/sonarqube/qa/util/pageobjects/settings/SettingsPage.java @@ -116,12 +116,12 @@ public class SettingsPage { } public SettingsPage clickOnCancel(String settingKey) { - Selenide.$("[data-key=\"" + settingKey + "\"]").find(byText("Cancel")).click(); + click(Selenide.$("[data-key=\"" + settingKey + "\"]").find(byText("Cancel"))); return this; } public SettingsPage removeFirstValue(String settingKey) { - Selenide.$("[data-key=\"" + settingKey + "\"]").find(".button.js-remove-value.button-icon").click(); + click(Selenide.$("[data-key=\"" + settingKey + "\"]").find(".js-remove-value")); return this; } @@ -133,8 +133,8 @@ public class SettingsPage { public SettingsPage setStringValue(String settingKey, String value) { SelenideElement setting = Selenide.$(".settings-definition[data-key=\"" + settingKey + "\"]"); setting.find("input").val(value); - setting.find(".js-save-changes").click(); - setting.find(".js-save-changes").shouldNot(Condition.exist); + setting.find(".button-success").click(); + setting.find(".button-success").shouldNot(Condition.exist); return this; } @@ -142,4 +142,10 @@ public class SettingsPage { SelenideElement setting = Selenide.$(".settings-definition[data-key=\"" + settingKey + "\"]"); return new PropertySetInput(setting); } + + private void click(SelenideElement selenideElement){ + // FIXME Temporary fix to correctly scroll in Firefox 46 + Selenide.executeJavaScript("arguments[0].click()", selenideElement); + } + } diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java index dcdb8b6e29f..4cc5adcd424 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/UpdateConditionAction.java @@ -89,7 +89,8 @@ public class UpdateConditionAction implements QualityGatesWsAction { QGateWithOrgDto qualityGateDto = dbClient.qualityGateDao().selectByOrganizationAndId(dbSession, organization, condition.getQualityGateId()); checkState(qualityGateDto != null, "Condition '%s' is linked to an unknown quality gate '%s'", id, condition.getQualityGateId()); wsSupport.checkCanEdit(qualityGateDto); - QualityGateConditionDto updatedCondition = qualityGateConditionsUpdater.updateCondition(dbSession, condition, metric, operator, emptyToNull(warning), emptyToNull(error), period); + QualityGateConditionDto updatedCondition = qualityGateConditionsUpdater.updateCondition(dbSession, condition, metric, operator, + emptyToNull(warning), emptyToNull(error), period); UpdateConditionResponse.Builder updateConditionResponse = UpdateConditionResponse.newBuilder() .setId(updatedCondition.getId()) .setMetric(updatedCondition.getMetricKey()) diff --git a/server/sonar-web/src/main/js/apps/explore/ExploreProjects.tsx b/server/sonar-web/src/main/js/apps/explore/ExploreProjects.tsx index 67f09dc545e..ff1789ee68c 100644 --- a/server/sonar-web/src/main/js/apps/explore/ExploreProjects.tsx +++ b/server/sonar-web/src/main/js/apps/explore/ExploreProjects.tsx @@ -26,5 +26,5 @@ interface Props { } export default function ExploreProjects(props: Props) { - return ; + return ; } diff --git a/server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx b/server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx index b0f995c2846..dc9836331d8 100644 --- a/server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx +++ b/server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx @@ -44,6 +44,7 @@ export interface Props { onSonarCloud: boolean; organization?: { key: string }; organizationsEnabled: boolean; + storageOptionsSuffix?: string; } interface State { @@ -151,25 +152,27 @@ export default class AllProjects extends React.PureComponent { } }; - getSavedOptions = () => { + getStorageOptions = () => { + const { storageOptionsSuffix } = this.props; const options: { sort?: string; view?: string; visualization?: string; } = {}; - if (storage.getSort()) { - options.sort = storage.getSort() || undefined; + if (storage.getSort(storageOptionsSuffix)) { + options.sort = storage.getSort(storageOptionsSuffix) || undefined; } - if (storage.getView()) { - options.view = storage.getView() || undefined; + if (storage.getView(storageOptionsSuffix)) { + options.view = storage.getView(storageOptionsSuffix) || undefined; } - if (storage.getVisualization()) { - options.visualization = storage.getVisualization() || undefined; + if (storage.getVisualization(storageOptionsSuffix)) { + options.visualization = storage.getVisualization(storageOptionsSuffix) || undefined; } return options; }; handlePerspectiveChange = ({ view, visualization }: { view: string; visualization?: string }) => { + const { storageOptionsSuffix } = this.props; const query: { view: string | undefined; visualization: string | undefined; @@ -191,20 +194,20 @@ export default class AllProjects extends React.PureComponent { this.updateLocationQuery(query); } - storage.saveSort(query.sort); - storage.saveView(query.view); - storage.saveVisualization(visualization); + storage.saveSort(query.sort, storageOptionsSuffix); + storage.saveView(query.view, storageOptionsSuffix); + storage.saveVisualization(visualization, storageOptionsSuffix); }; handleSortChange = (sort: string, desc: boolean) => { const asString = (desc ? '-' : '') + sort; this.updateLocationQuery({ sort: asString }); - storage.saveSort(asString); + storage.saveSort(asString, this.props.storageOptionsSuffix); }; handleQueryChange(initialMount: boolean) { const query = parseUrlQuery(this.props.location.query); - const savedOptions = this.getSavedOptions(); + const savedOptions = this.getStorageOptions(); const savedOptionsSet = savedOptions.sort || savedOptions.view || savedOptions.visualization; // if there is no filter, but there are saved preferences in the localStorage diff --git a/server/sonar-web/src/main/js/apps/projects/components/AllProjectsContainer.tsx b/server/sonar-web/src/main/js/apps/projects/components/AllProjectsContainer.tsx index 6d236c388a2..cd24cb1cb1e 100644 --- a/server/sonar-web/src/main/js/apps/projects/components/AllProjectsContainer.tsx +++ b/server/sonar-web/src/main/js/apps/projects/components/AllProjectsContainer.tsx @@ -37,6 +37,7 @@ interface OwnProps { isFavorite: boolean; location: { pathname: string; query: RawQuery }; organization?: { key: string }; + storageOptionsSuffix?: string; } const stateToProps = (state: any) => { diff --git a/server/sonar-web/src/main/js/apps/projects/components/__tests__/AllProjects-test.tsx b/server/sonar-web/src/main/js/apps/projects/components/__tests__/AllProjects-test.tsx index 14ea18c6c7c..cc642e972f4 100644 --- a/server/sonar-web/src/main/js/apps/projects/components/__tests__/AllProjects-test.tsx +++ b/server/sonar-web/src/main/js/apps/projects/components/__tests__/AllProjects-test.tsx @@ -117,7 +117,7 @@ it('changes sort', () => { const wrapper = shallowRender({}, push); wrapper.find('PageHeader').prop('onSortChange')('size', false); expect(push).lastCalledWith({ pathname: '/projects', query: { sort: 'size' } }); - expect(saveSort).lastCalledWith('size'); + expect(saveSort).lastCalledWith('size', undefined); }); it('changes perspective to leak', () => { @@ -128,9 +128,9 @@ it('changes perspective to leak', () => { pathname: '/projects', query: { view: 'leak', visualization: undefined } }); - expect(saveSort).lastCalledWith(undefined); - expect(saveView).lastCalledWith('leak'); - expect(saveVisualization).lastCalledWith(undefined); + expect(saveSort).lastCalledWith(undefined, undefined); + expect(saveView).lastCalledWith('leak', undefined); + expect(saveVisualization).lastCalledWith(undefined, undefined); }); it('updates sorting when changing perspective from leak', () => { @@ -144,9 +144,9 @@ it('updates sorting when changing perspective from leak', () => { pathname: '/projects', query: { sort: 'coverage', view: undefined, visualization: undefined } }); - expect(saveSort).lastCalledWith('coverage'); - expect(saveView).lastCalledWith(undefined); - expect(saveVisualization).lastCalledWith(undefined); + expect(saveSort).lastCalledWith('coverage', undefined); + expect(saveView).lastCalledWith(undefined, undefined); + expect(saveVisualization).lastCalledWith(undefined, undefined); }); it('changes perspective to risk visualization', () => { @@ -160,9 +160,9 @@ it('changes perspective to risk visualization', () => { pathname: '/projects', query: { view: 'visualizations', visualization: 'risk' } }); - expect(saveSort).lastCalledWith(undefined); - expect(saveView).lastCalledWith('visualizations'); - expect(saveVisualization).lastCalledWith('risk'); + expect(saveSort).lastCalledWith(undefined, undefined); + expect(saveView).lastCalledWith('visualizations', undefined); + expect(saveVisualization).lastCalledWith('risk', undefined); }); function mountRender(props: any = {}, push: Function = jest.fn(), replace: Function = jest.fn()) { diff --git a/server/sonar-web/src/main/js/components/SourceViewer/SourceViewerBase.tsx b/server/sonar-web/src/main/js/components/SourceViewer/SourceViewerBase.tsx index 1c615cc6bd4..c0e9326f5e8 100644 --- a/server/sonar-web/src/main/js/components/SourceViewer/SourceViewerBase.tsx +++ b/server/sonar-web/src/main/js/components/SourceViewer/SourceViewerBase.tsx @@ -100,7 +100,6 @@ interface State { duplications?: Duplication[]; duplicationsByLine: { [line: number]: number[] }; hasSourcesAfter: boolean; - highlightedLine?: number; highlightedSymbols: string[]; issueLocationsByLine: { [line: number]: LinearIssueLocation[] }; issuePopup?: { issue: string; name: string }; @@ -134,11 +133,11 @@ export default class SourceViewerBase extends React.PureComponent constructor(props: Props) { super(props); + this.state = { displayDuplications: false, duplicationsByLine: {}, hasSourcesAfter: false, - highlightedLine: props.highlightedLine, highlightedSymbols: [], issuesByLine: {}, issueLocationsByLine: {}, @@ -242,6 +241,7 @@ export default class SourceViewerBase extends React.PureComponent issues => { if (this.mounted) { const finalSources = sources.slice(0, LINES); + this.setState( { component, @@ -250,7 +250,6 @@ export default class SourceViewerBase extends React.PureComponent duplications: undefined, duplicationsByLine: {}, hasSourcesAfter: sources.length > LINES, - highlightedLine: undefined, highlightedSymbols: [], issueLocationsByLine: locationsByLine(issues), issues, @@ -669,7 +668,7 @@ export default class SourceViewerBase extends React.PureComponent filterLine={this.handleFilterLine} hasSourcesAfter={this.state.hasSourcesAfter} hasSourcesBefore={hasSourcesBefore} - highlightedLine={this.state.highlightedLine} + highlightedLine={this.props.highlightedLine} highlightedLocationMessage={this.props.highlightedLocationMessage} highlightedLocations={this.props.highlightedLocations} highlightedSymbols={this.state.highlightedSymbols} diff --git a/server/sonar-web/src/main/js/components/SourceViewer/components/LineNumber.tsx b/server/sonar-web/src/main/js/components/SourceViewer/components/LineNumber.tsx index 6d1f4940141..9297036d88d 100644 --- a/server/sonar-web/src/main/js/components/SourceViewer/components/LineNumber.tsx +++ b/server/sonar-web/src/main/js/components/SourceViewer/components/LineNumber.tsx @@ -56,6 +56,7 @@ export default class LineNumber extends React.PureComponent { tabIndex={0}> } diff --git a/server/sonar-web/src/main/js/components/SourceViewer/components/LineSCM.tsx b/server/sonar-web/src/main/js/components/SourceViewer/components/LineSCM.tsx index c1de61e6ee2..e692a3c46f1 100644 --- a/server/sonar-web/src/main/js/components/SourceViewer/components/LineSCM.tsx +++ b/server/sonar-web/src/main/js/components/SourceViewer/components/LineSCM.tsx @@ -58,6 +58,7 @@ export default class LineSCM extends React.PureComponent { {cell} } position="bottomright" togglePopup={this.handleTogglePopup} diff --git a/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/LineNumber-test.tsx.snap b/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/LineNumber-test.tsx.snap index 2633afb6d2c..3841048e4ae 100644 --- a/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/LineNumber-test.tsx.snap +++ b/server/sonar-web/src/main/js/components/SourceViewer/components/__tests__/__snapshots__/LineNumber-test.tsx.snap @@ -16,6 +16,12 @@ exports[`render line 3 1`] = ` > { const { renderLabel } = this.props as PropsWithDefault; const { query, activeIdx, selectedElements, unselectedElements } = this.state; const activeElement = this.getAllElements(this.props, this.state)[activeIdx]; + const showNewElement = allowNewElements && this.isNewElement(query, this.props); const infiniteList = this.props.listSize === 0; const listClasses = classNames('menu', { 'menu-vertically-limited': infiniteList, @@ -278,10 +279,6 @@ export default class MultiSelect extends React.PureComponent { />
    - {selectedElements.length < 1 && - unselectedElements.length < 1 && ( -
  • {translateWithParameters('no_results_for_x', query)}
  • - )} {selectedElements.length > 0 && selectedElements.map(element => ( { renderLabel={renderLabel} /> ))} - {allowNewElements && - this.isNewElement(query, this.props) && ( - + {showNewElement && ( + + )} + {!showNewElement && + selectedElements.length < 1 && + unselectedElements.length < 1 && ( +
  • {translateWithParameters('no_results_for_x', query)}
  • )}
{footerNode} diff --git a/server/sonar-web/src/main/js/helpers/storage.ts b/server/sonar-web/src/main/js/helpers/storage.ts index fc54899c8b4..b533d353735 100644 --- a/server/sonar-web/src/main/js/helpers/storage.ts +++ b/server/sonar-web/src/main/js/helpers/storage.ts @@ -28,12 +28,13 @@ const PROJECTS_SORT = 'sonarqube.projects.sort'; const PROJECT_ACTIVITY_GRAPH = 'sonarqube.project_activity.graph'; const PROJECT_ACTIVITY_GRAPH_CUSTOM = 'sonarqube.project_activity.graph.custom'; -function save(key: string, value?: string): void { +function save(key: string, value?: string, suffix?: string): void { try { + const finalKey = suffix ? `${key}.${suffix}` : key; if (value) { - window.localStorage.setItem(key, value); + window.localStorage.setItem(finalKey, value); } else { - window.localStorage.removeItem(key); + window.localStorage.removeItem(finalKey); } } catch (e) { // usually that means the storage is full @@ -41,12 +42,16 @@ function save(key: string, value?: string): void { } } +function get(key: string, suffix?: string): string | null { + return window.localStorage.getItem(suffix ? `${key}.${suffix}` : key); +} + export function saveFavorite(): void { save(PROJECTS_DEFAULT_FILTER, PROJECTS_FAVORITE); } export function isFavoriteSet(): boolean { - const setting = window.localStorage.getItem(PROJECTS_DEFAULT_FILTER); + const setting = get(PROJECTS_DEFAULT_FILTER); return setting === PROJECTS_FAVORITE; } @@ -55,32 +60,32 @@ export function saveAll(): void { } export function isAllSet(): boolean { - const setting = window.localStorage.getItem(PROJECTS_DEFAULT_FILTER); + const setting = get(PROJECTS_DEFAULT_FILTER); return setting === PROJECTS_ALL; } -export function saveView(view?: string): void { - save(PROJECTS_VIEW, view); +export function saveView(view?: string, suffix?: string): void { + save(PROJECTS_VIEW, view, suffix); } -export function getView(): string | null { - return window.localStorage.getItem(PROJECTS_VIEW); +export function getView(suffix?: string): string | null { + return get(PROJECTS_VIEW, suffix); } -export function saveVisualization(visualization?: string): void { - save(PROJECTS_VISUALIZATION, visualization); +export function saveVisualization(visualization?: string, suffix?: string): void { + save(PROJECTS_VISUALIZATION, visualization, suffix); } -export function getVisualization(): string | null { - return window.localStorage.getItem(PROJECTS_VISUALIZATION); +export function getVisualization(suffix?: string): string | null { + return get(PROJECTS_VISUALIZATION, suffix); } -export function saveSort(sort?: string): void { - save(PROJECTS_SORT, sort); +export function saveSort(sort?: string, suffix?: string): void { + save(PROJECTS_SORT, sort, suffix); } -export function getSort(): string | null { - return window.localStorage.getItem(PROJECTS_SORT); +export function getSort(suffix?: string): string | null { + return get(PROJECTS_SORT, suffix); } export function saveCustomGraph(metrics?: string[]): void { @@ -88,7 +93,7 @@ export function saveCustomGraph(metrics?: string[]): void { } export function getCustomGraph(): string[] { - const customGraphs = window.localStorage.getItem(PROJECT_ACTIVITY_GRAPH_CUSTOM); + const customGraphs = get(PROJECT_ACTIVITY_GRAPH_CUSTOM); return customGraphs ? customGraphs.split(',') : []; } @@ -97,5 +102,5 @@ export function saveGraph(graph?: string): void { } export function getGraph(): string { - return window.localStorage.getItem(PROJECT_ACTIVITY_GRAPH) || 'issues'; + return get(PROJECT_ACTIVITY_GRAPH) || 'issues'; } diff --git a/tests/build.gradle b/tests/build.gradle index 666130b7e6f..f1eb642dd21 100644 --- a/tests/build.gradle +++ b/tests/build.gradle @@ -129,13 +129,13 @@ task integrationTest(type: Test) { includeTestsMatching 'org.sonarqube.tests.organization.*Suite' break case 'Plugins': - includeTestsMatching 'org.sonarqube.tests.plugins.PluginsSuite' + includeTestsMatching 'org.sonarqube.tests.plugins.*Suite' break case 'Upgrade': - includeTestsMatching 'org.sonarqube.tests.upgrade.UpgradeSuite' + includeTestsMatching 'org.sonarqube.tests.upgrade.*Suite' break case 'ServerPerformance': - includeTestsMatching 'org.sonarqube.tests.performance.server.ServerPerformanceSuite' + includeTestsMatching 'org.sonarqube.tests.performance.server.*Suite' break } testLogging { diff --git a/tests/projects/qualitygate/small-changesets/v1-1000-lines/src/sample/Sample.xoo.scm b/tests/projects/qualitygate/small-changesets/v1-1000-lines/src/sample/Sample.xoo.scm index d33880c7e51..8939249bc5c 100644 --- a/tests/projects/qualitygate/small-changesets/v1-1000-lines/src/sample/Sample.xoo.scm +++ b/tests/projects/qualitygate/small-changesets/v1-1000-lines/src/sample/Sample.xoo.scm @@ -1,1000 +1,1000 @@ -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 \ No newline at end of file +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 diff --git a/tests/projects/qualitygate/small-changesets/v2-1019-lines/src/sample/Sample.xoo.scm b/tests/projects/qualitygate/small-changesets/v2-1019-lines/src/sample/Sample.xoo.scm index def6df882e8..aa26ea19f24 100644 --- a/tests/projects/qualitygate/small-changesets/v2-1019-lines/src/sample/Sample.xoo.scm +++ b/tests/projects/qualitygate/small-changesets/v2-1019-lines/src/sample/Sample.xoo.scm @@ -1,1019 +1,1019 @@ -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 \ No newline at end of file +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 diff --git a/tests/projects/qualitygate/small-changesets/v2-1020-lines/src/sample/Sample.xoo.scm b/tests/projects/qualitygate/small-changesets/v2-1020-lines/src/sample/Sample.xoo.scm index 98fd9a53dda..eb74ab95461 100644 --- a/tests/projects/qualitygate/small-changesets/v2-1020-lines/src/sample/Sample.xoo.scm +++ b/tests/projects/qualitygate/small-changesets/v2-1020-lines/src/sample/Sample.xoo.scm @@ -1,1020 +1,1020 @@ -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -1,user1,2013-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -2,user2,2014-04-01 -3,user3,2014-04-03 \ No newline at end of file +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +1,user1,2017-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +2,user2,2018-04-01 +3,user3,2018-04-03 diff --git a/tests/src/test/java/org/sonarqube/tests/Category6Suite.java b/tests/src/test/java/org/sonarqube/tests/Category6Suite.java index c8bbc8001f3..7079fc7b7e4 100644 --- a/tests/src/test/java/org/sonarqube/tests/Category6Suite.java +++ b/tests/src/test/java/org/sonarqube/tests/Category6Suite.java @@ -27,7 +27,6 @@ import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.sonarqube.tests.authorization.PermissionTemplateTest; import org.sonarqube.tests.ce.ReportFailureNotificationTest; -import org.sonarqube.tests.issue.IssueNotificationsTest; import org.sonarqube.tests.issue.IssueTagsTest; import org.sonarqube.tests.issue.OrganizationIssuesPageTest; import org.sonarqube.tests.qualityProfile.BuiltInQualityProfilesTest; @@ -63,8 +62,7 @@ import static util.ItUtils.xooPlugin; RulesWsTest.class, RulesMarkdownTest.class, PermissionTemplateTest.class, - ReportFailureNotificationTest.class, - IssueNotificationsTest.class + ReportFailureNotificationTest.class }) public class Category6Suite { diff --git a/tests/src/test/java/org/sonarqube/tests/authorization/PermissionTemplatePageTest.java b/tests/src/test/java/org/sonarqube/tests/authorization/PermissionTemplatePageTest.java index a6185016560..05650795cac 100644 --- a/tests/src/test/java/org/sonarqube/tests/authorization/PermissionTemplatePageTest.java +++ b/tests/src/test/java/org/sonarqube/tests/authorization/PermissionTemplatePageTest.java @@ -45,8 +45,8 @@ public class PermissionTemplatePageTest { @Test public void bulk_apply_permission_template() { String project = tester.projects().provision().getKey(); - String userLogin = tester.users().generateMemberOfDefaultOrganization().getLogin(); - String adminLogin = tester.users().generateAdministratorOnDefaultOrganization().getLogin(); + String userLogin = tester.users().generate().getLogin(); + String adminLogin = tester.users().generateAdministrator().getLogin(); tester.wsClient().permissions().createTemplate(new CreateTemplateRequest().setName("foo-template")); tester.wsClient().permissions().addUserToTemplate( diff --git a/tests/src/test/java/org/sonarqube/tests/component/BranchTest.java b/tests/src/test/java/org/sonarqube/tests/component/BranchTest.java index e1e5dab62c3..0086fee15b0 100644 --- a/tests/src/test/java/org/sonarqube/tests/component/BranchTest.java +++ b/tests/src/test/java/org/sonarqube/tests/component/BranchTest.java @@ -42,7 +42,7 @@ public class BranchTest { public static Orchestrator orchestrator = ComponentSuite.ORCHESTRATOR; @Rule - public Tester tester = new Tester(orchestrator); + public Tester tester = new Tester(orchestrator).disableOrganizations(); @Test public void list_branches_contains_main_branch() { diff --git a/tests/src/test/java/org/sonarqube/tests/component/CodePageTest.java b/tests/src/test/java/org/sonarqube/tests/component/CodePageTest.java index a2fb3478de1..ee0795801cf 100644 --- a/tests/src/test/java/org/sonarqube/tests/component/CodePageTest.java +++ b/tests/src/test/java/org/sonarqube/tests/component/CodePageTest.java @@ -35,7 +35,7 @@ public class CodePageTest { public static Orchestrator orchestrator = ComponentSuite.ORCHESTRATOR; @Rule - public Tester tester = new Tester(orchestrator); + public Tester tester = new Tester(orchestrator).disableOrganizations(); @Test public void code_page() { diff --git a/tests/src/test/java/org/sonarqube/tests/component/ComponentsWsTest.java b/tests/src/test/java/org/sonarqube/tests/component/ComponentsWsTest.java index 470b5b6d967..2d55b8862f7 100644 --- a/tests/src/test/java/org/sonarqube/tests/component/ComponentsWsTest.java +++ b/tests/src/test/java/org/sonarqube/tests/component/ComponentsWsTest.java @@ -39,7 +39,7 @@ public class ComponentsWsTest { @ClassRule public static final Orchestrator orchestrator = ComponentSuite.ORCHESTRATOR; - private static Tester tester = new Tester(orchestrator); + private static Tester tester = new Tester(orchestrator).disableOrganizations(); @ClassRule public static RuleChain ruleChain = RuleChain.outerRule(orchestrator).around(tester); diff --git a/tests/src/test/java/org/sonarqube/tests/component/ModuleTest.java b/tests/src/test/java/org/sonarqube/tests/component/ModuleTest.java index ffc3f4e1a47..37029fd7b57 100644 --- a/tests/src/test/java/org/sonarqube/tests/component/ModuleTest.java +++ b/tests/src/test/java/org/sonarqube/tests/component/ModuleTest.java @@ -28,7 +28,6 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.sonarqube.qa.util.Tester; -import org.sonarqube.ws.Organizations; import org.sonarqube.ws.client.components.ShowRequest; import org.sonarqube.ws.client.components.TreeRequest; import org.sonarqube.ws.client.projects.UpdateKeyRequest; @@ -48,14 +47,13 @@ public class ModuleTest { @Rule public TemporaryFolder temp = new TemporaryFolder(); @Rule - public Tester tester = new Tester(orchestrator); + public Tester tester = new Tester(orchestrator).disableOrganizations(); /** * SONAR-10536 */ @Test public void analyze_disabled_module_as_a_new_project() throws Exception { - Organizations.Organization organization = tester.organizations().generate(); String projectKey = PROJECT_KEY; String moduleKey = projectKey + ":module_a"; @@ -63,7 +61,7 @@ public class ModuleTest { File projectWithModule = new XooProjectBuilder(projectKey) .addModules("module_a") .build(temp.newFolder()); - analyze(organization, projectWithModule); + analyze(projectWithModule); assertThat(tester.projects().exists(moduleKey)).isTrue(); assertThat(countFilesInProject(projectKey)).isEqualTo(2 /* 1 file in project and 1 file in module */); @@ -71,7 +69,7 @@ public class ModuleTest { // is considered as disabled File projectWithoutModule = new XooProjectBuilder(projectKey) .build(temp.newFolder()); - analyze(organization, projectWithoutModule); + analyze(projectWithoutModule); assertThat(tester.projects().exists(moduleKey)).isFalse(); assertThat(countFilesInProject(projectKey)).isEqualTo(1 /* 1 file in project */); @@ -79,7 +77,7 @@ public class ModuleTest { File moduleAsProject = new XooProjectBuilder(moduleKey) .build(temp.newFolder()); try { - analyze(organization, moduleAsProject); + analyze(moduleAsProject); fail(); } catch (BuildFailureException e) { assertThat(e.getResult().getLogs()).contains("The project '" + moduleKey + "' is already defined in SonarQube but as a module of project '" + projectKey + "'"); @@ -90,16 +88,14 @@ public class ModuleTest { updateModuleKey(moduleKey, moduleKey + "_old"); // module_a can now be analyzed as a project - analyze(organization, moduleAsProject); + analyze(moduleAsProject); assertThat(tester.projects().exists(moduleKey)).isTrue(); assertThat(countFilesInProject(moduleKey)).isEqualTo(1); assertThat(tester.wsClient().components().show(new ShowRequest().setComponent(moduleKey)).getComponent().getQualifier()).isEqualTo("TRK"); } - private void analyze(Organizations.Organization organization, File projectDir) { - orchestrator.executeBuild(SonarScanner.create(projectDir, - "sonar.organization", organization.getKey(), - "sonar.login", "admin", "sonar.password", "admin")); + private void analyze(File projectDir) { + orchestrator.executeBuild(SonarScanner.create(projectDir)); } private int countFilesInProject(String projectKey) { diff --git a/tests/src/test/java/org/sonarqube/tests/issue/IssueNotificationsTest.java b/tests/src/test/java/org/sonarqube/tests/issue/IssueNotificationsTest.java index cf98015fc8d..fd4cd4841b2 100644 --- a/tests/src/test/java/org/sonarqube/tests/issue/IssueNotificationsTest.java +++ b/tests/src/test/java/org/sonarqube/tests/issue/IssueNotificationsTest.java @@ -19,82 +19,58 @@ */ package org.sonarqube.tests.issue; -import com.google.common.collect.ObjectArrays; import com.sonar.orchestrator.Orchestrator; import java.io.IOException; -import java.util.Arrays; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.apache.commons.lang.RandomStringUtils; -import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameter; -import org.junit.runners.Parameterized.Parameters; import org.sonarqube.qa.util.Tester; -import org.sonarqube.tests.Category6Suite; -import org.sonarqube.ws.Issues.Issue; -import org.sonarqube.ws.Issues.SearchWsResponse; -import org.sonarqube.ws.Organizations.Organization; +import org.sonarqube.ws.Issues; +import org.sonarqube.ws.Permissions; import org.sonarqube.ws.Projects.CreateWsResponse.Project; import org.sonarqube.ws.Qualityprofiles; -import org.sonarqube.ws.Users; import org.sonarqube.ws.Users.CreateWsResponse.User; -import org.sonarqube.ws.client.PostRequest; -import org.sonarqube.ws.client.WsClient; import org.sonarqube.ws.client.issues.AssignRequest; import org.sonarqube.ws.client.issues.BulkChangeRequest; import org.sonarqube.ws.client.issues.SearchRequest; +import org.sonarqube.ws.client.notifications.AddRequest; import org.sonarqube.ws.client.permissions.AddUserRequest; import org.subethamail.wiser.Wiser; import org.subethamail.wiser.WiserMessage; import static java.lang.String.format; import static java.util.Collections.singletonList; +import static org.apache.commons.lang.time.DateUtils.addDays; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Fail.fail; +import static util.ItUtils.formatDate; import static util.ItUtils.runProjectAnalysis; -@RunWith(Parameterized.class) public class IssueNotificationsTest { + private static final String PAST_ANALYSIS_DATE = formatDate(addDays(new Date(), -30)); + @ClassRule - public static final Orchestrator ORCHESTRATOR = Category6Suite.ORCHESTRATOR; + public static final Orchestrator ORCHESTRATOR = IssueSuite.ORCHESTRATOR; @Rule - public Tester tester = new Tester(ORCHESTRATOR); - - private final static String EMAIL_TEST = "test@test.com"; - private final static String PROJECT_KEY = "sample"; + public Tester tester = new Tester(ORCHESTRATOR).disableOrganizations(); private static Wiser smtpServer; - private Organization organization; - private User userWithUserRole; - private User userWithUserRoleThroughGroups; - private User userNotInOrganization; - - @Parameters - public static List data() { - return Arrays.asList(true, false); - } - - @Parameter - public boolean privateProject; - @BeforeClass public static void setUp() { smtpServer = new Wiser(0); smtpServer.start(); - System.out.println("SMTP Server port: " + smtpServer.getServer().getPort()); } @AfterClass @@ -105,49 +81,30 @@ public class IssueNotificationsTest { } @Before - public void before() throws Exception { - organization = tester.organizations().generate(); - - // Configure Sonar + public void before() { tester.settings().setGlobalSettings("email.smtp_host.secured", "localhost"); tester.settings().setGlobalSettings("email.smtp_port.secured", Integer.toString(smtpServer.getServer().getPort())); - - clearSmtpMessages(); - checkEmailSettings(); - clearSmtpMessages(); - } - - @After - public void after() { clearSmtpMessages(); } @Test - public void notifications_on_new_issues_should_send_emails_to_subscribers() throws Exception { + public void notification_for_NewIssues() throws Exception { String version = RandomStringUtils.randomAlphanumeric(10); - createSampleProject(privateProject ? "private" : "public"); - createUsers(); - runAnalysis("shared/xoo-sample", - "sonar.projectVersion", version, - "sonar.projectDate", "2015-12-15"); - - // If project is private userNotInOrganization will not receive and email (missing UserRole.User permission) - waitUntilAllNotificationsAreDelivered(privateProject ? 2 : 3); - assertThat(smtpServer.getMessages()).hasSize(privateProject ? 2 : 3); - - if (privateProject) { - assertThat(extractRecipients(smtpServer.getMessages())) - .containsExactlyInAnyOrder( - format("<%s>", userWithUserRole.getEmail()), - format("<%s>", userWithUserRoleThroughGroups.getEmail())); - } else { - assertThat(extractRecipients(smtpServer.getMessages())) - .containsExactlyInAnyOrder( - format("<%s>", userWithUserRole.getEmail()), - format("<%s>", userWithUserRoleThroughGroups.getEmail()), - format("<%s>", userNotInOrganization.getEmail())); - } + Project project = tester.projects().provision(); + createSampleQProfile(project); + User userReceivingNotification = tester.users().generate(); + tester.as(userReceivingNotification.getLogin()).wsClient().notifications().add(new AddRequest().setType("NewIssues").setChannel("EmailNotificationChannel")); + User anotherUser = tester.users().generate(); + + runProjectAnalysis(ORCHESTRATOR, "shared/xoo-sample", + "sonar.projectKey", project.getKey(), + "sonar.projectDate", PAST_ANALYSIS_DATE, + "sonar.projectVersion", version); + checkNotificationSent(1); + assertThat(extractRecipients(smtpServer.getMessages())) + .containsExactlyInAnyOrder( + format("<%s>", userReceivingNotification.getEmail())); extractBodies(smtpServer.getMessages()).forEach( message -> assertThat(message) .contains("Project: Sample") @@ -156,72 +113,71 @@ public class IssueNotificationsTest { .contains("Type") .contains("Bug: ").contains("Code Smell: ").contains("Vulnerability: ") .contains("One Issue Per Line (xoo): 17") - .contains("More details at: http://localhost:9000/project/issues?id=sample&createdAt=2015-12-15T00%3A00%3A00%2B")); - - clearSmtpMessages(); + .contains("More details at: http://localhost:9000/project/issues?id=" + project.getKey() + "&createdAt=" + PAST_ANALYSIS_DATE + "T00%3A00%3A00%2B")); } @Test - public void notifications_for_issue_changes() throws Exception { + public void notification_for_ChangesOnMyIssue() throws Exception { String version = RandomStringUtils.randomAlphanumeric(10); - createSampleProject(privateProject ? "private" : "public"); - createUsers(); - runAnalysis("shared/xoo-sample", - "sonar.projectVersion", version, - "sonar.projectDate", "2015-12-15"); - + Project project = tester.projects().provision(); + createSampleQProfile(project); + User user1 = tester.users().generate(); + tester.as(user1.getLogin()).wsClient().notifications().add(new AddRequest().setType("ChangesOnMyIssue").setChannel("EmailNotificationChannel")); + User user2 = tester.users().generate(); + tester.as(user2.getLogin()).wsClient().notifications().add(new AddRequest().setType("ChangesOnMyIssue").setChannel("EmailNotificationChannel")); + runProjectAnalysis(ORCHESTRATOR, "shared/xoo-sample", + "sonar.projectKey", project.getKey(), + "sonar.projectDate", PAST_ANALYSIS_DATE, + "sonar.projectVersion", version); // Ignore the messages generated by the analysis clearSmtpMessages(); // Change assignee - SearchWsResponse issues = tester.wsClient().issues().search(new SearchRequest().setProjects(singletonList(PROJECT_KEY))); - Issue issue = issues.getIssuesList().get(0); - tester.wsClient().issues().assign(new AssignRequest().setIssue(issue.getKey()).setAssignee(userWithUserRole.getLogin())); + Issues.SearchWsResponse issues = tester.wsClient().issues().search(new SearchRequest().setProjects(singletonList(project.getKey()))); + Issues.Issue issue = issues.getIssuesList().get(0); + tester.wsClient().issues().assign(new AssignRequest().setIssue(issue.getKey()).setAssignee(user1.getLogin())); + checkNotificationSent(1); // Only the assignee should receive the email - waitUntilAllNotificationsAreDelivered(1); - assertThat(smtpServer.getMessages()).hasSize(1); - assertThat(extractRecipients(smtpServer.getMessages())).containsExactly(format("<%s>", userWithUserRole.getEmail())); - + assertThat(extractRecipients(smtpServer.getMessages())).containsExactly(format("<%s>", user1.getEmail())); assertThat(extractBodies(smtpServer.getMessages()).get(0)) .contains("sample/Sample.xoo") - .contains("Assignee changed to userWithUserRole") - .contains("More details at: http://localhost:9000/project/issues?id=sample&issues=" + issue.getKey() + "&open=" + issue.getKey()); + .contains(format("Assignee changed to %s", user1.getName())) + .contains("More details at: http://localhost:9000/project/issues?id=" + project.getKey() + "&issues=" + issue.getKey() + "&open=" + issue.getKey()); } @Test - public void notifications_for_personalized_emails() throws Exception { + public void notification_for_MyNewIssue() throws Exception { String version = RandomStringUtils.randomAlphanumeric(10); - // 1st analysis without any issue (because no file is analyzed) - createSampleProject(privateProject ? "private" : "public"); - createUsers(); - tester.settings().setGlobalSettings("sonar.issues.defaultAssigneeLogin", userWithUserRole.getLogin()); + Project project = tester.projects().provision(); + createSampleQProfile(project); + // User1 is the default assignee + User user1 = tester.users().generate(); + tester.as(user1.getLogin()).wsClient().notifications().add(new AddRequest().setType("SQ-MyNewIssues").setChannel("EmailNotificationChannel")); + tester.settings().setGlobalSettings("sonar.issues.defaultAssigneeLogin", user1.getLogin()); + // User2 should not receive any email + User user2 = tester.users().generate(); + tester.as(user2.getLogin()).wsClient().notifications().add(new AddRequest().setType("SQ-MyNewIssues").setChannel("EmailNotificationChannel")); - runAnalysis("issue/xoo-with-scm", + // 1st analysis without any issue (because no file is analyzed) + runProjectAnalysis(ORCHESTRATOR, "issue/xoo-with-scm", + "sonar.projectKey", project.getKey(), "sonar.projectVersion", version, "sonar.scm.provider", "xoo", "sonar.scm.disabled", "false", "sonar.exclusions", "**/*"); - // No email since all code is ignored - waitUntilAllNotificationsAreDelivered(1); - assertThat(smtpServer.getMessages()).isEmpty(); + checkNoNotificationSent(); // run 2nd analysis which will generate issues on the leak period - runAnalysis("issue/xoo-with-scm", + runProjectAnalysis(ORCHESTRATOR, "issue/xoo-with-scm", + "sonar.projectKey", project.getKey(), "sonar.projectVersion", version, "sonar.scm.provider", "xoo", "sonar.scm.disabled", "false"); - - // We expect to receive a notification for each subscriber with UserRole.user - // And a personalized email for the assignee userWithUserRole - waitUntilAllNotificationsAreDelivered(privateProject ? 3 : 4); - assertThat(smtpServer.getMessages()).hasSize(privateProject ? 3 : 4); - - // the last email sent is the personalized one - MimeMessage message = smtpServer.getMessages().get(privateProject ? 2 : 3).getMimeMessage(); - - assertThat(message.getHeader("To", null)).isEqualTo(format("<%s>", userWithUserRole.getEmail())); + checkNotificationSent(1); + MimeMessage message = smtpServer.getMessages().get(0).getMimeMessage(); + assertThat(message.getHeader("To", null)).isEqualTo(format("<%s>", user1.getEmail())); assertThat(message.getSubject()).contains("You have 13 new issues"); assertThat((String) message.getContent()) .contains("Project: Sample") @@ -232,127 +188,95 @@ public class IssueNotificationsTest { * SONAR-4606 */ @Test - public void notifications_for_bulk_change_ws() throws Exception { + public void notification_for_bulk_change_ws() throws Exception { String version = RandomStringUtils.randomAlphanumeric(10); - createSampleProject(privateProject ? "private" : "public"); - createUsers(); - runAnalysis("shared/xoo-sample", + Project project = tester.projects().provision(); + createSampleQProfile(project); + User user1 = tester.users().generate(); + tester.as(user1.getLogin()).wsClient().notifications().add(new AddRequest().setType("ChangesOnMyIssue").setChannel("EmailNotificationChannel")); + User user2 = tester.users().generate(); + tester.as(user2.getLogin()).wsClient().notifications().add(new AddRequest().setType("ChangesOnMyIssue").setChannel("EmailNotificationChannel")); + runProjectAnalysis(ORCHESTRATOR, "shared/xoo-sample", + "sonar.projectKey", project.getKey(), "sonar.projectVersion", version, - "sonar.projectDate", "2015-12-15"); - - // If project is private userNotInOrganization will not receive and email (missing UserRole.User permission) - waitUntilAllNotificationsAreDelivered(privateProject ? 2 : 3); - assertThat(smtpServer.getMessages()).hasSize(privateProject ? 2 : 3); + "sonar.projectDate", PAST_ANALYSIS_DATE); + checkNoNotificationSent(); clearSmtpMessages(); - - SearchWsResponse issues = tester.wsClient().issues().search(new SearchRequest().setProjects(singletonList(PROJECT_KEY))); - Issue issue = issues.getIssuesList().get(0); + Issues.SearchWsResponse issues = tester.wsClient().issues().search(new SearchRequest().setProjects(singletonList(project.getKey()))); + Issues.Issue issue = issues.getIssuesList().get(0); // bulk change without notification by default tester.wsClient().issues().bulkChange(new BulkChangeRequest() .setIssues(singletonList(issue.getKey())) - .setAssign(singletonList(userWithUserRole.getLogin())) + .setAssign(singletonList(user1.getLogin())) .setSetSeverity(singletonList("MINOR"))); + checkNoNotificationSent(); // bulk change with notification tester.wsClient().issues().bulkChange(new BulkChangeRequest() .setIssues(singletonList(issue.getKey())) .setSetSeverity(singletonList("BLOCKER")) .setSendNotifications("true")); - - // We are waiting for a single notification for userWithUserRole - // for a change on MyIssues - waitUntilAllNotificationsAreDelivered(1); - assertThat(smtpServer.getMessages()).hasSize(1); - + checkNotificationSent(1); assertThat(extractRecipients(smtpServer.getMessages())) - .containsExactly(format("<%s>", userWithUserRole.getEmail())); + .containsExactly(format("<%s>", user1.getEmail())); assertThat(extractBodies(smtpServer.getMessages()).get(0)) .contains("sample/Sample.xoo") .contains("Severity: BLOCKER (was MINOR)") - .contains("More details at: http://localhost:9000/project/issues?id=sample&issues=" + issue.getKey() + "&open=" + issue.getKey()); - } - - private void runAnalysis(String projectRelativePath, String... extraParameters) throws Exception { - String[] parameters = { - "sonar.login", "admin", - "sonar.password", "admin", - "sonar.organization", organization.getKey()}; - runProjectAnalysis(ORCHESTRATOR, projectRelativePath, - ObjectArrays.concat(parameters, extraParameters, String.class)); - - // Two emails should be sent for subscribers of "New issues" - waitUntilAllNotificationsAreDelivered(2); + .contains("More details at: http://localhost:9000/project/issues?id=" + project.getKey() + "&issues=" + issue.getKey() + "&open=" + issue.getKey()); } - private void createSampleProject(String visibility) { - // Create project - Qualityprofiles.CreateWsResponse.QualityProfile profile = tester.qProfiles().createXooProfile(organization); - Project project = tester.projects().provision(organization, p -> p.setProject(PROJECT_KEY) - .setName("Sample") - .setVisibility(visibility)); - tester.qProfiles() - .activateRule(profile, "xoo:OneIssuePerLine") - .assignQProfileToProject(profile, project); - } - - private void createUsers() { - // Create a user with User role - userWithUserRole = tester.users().generateMember(organization, - u -> u.setLogin("userWithUserRole") - .setPassword("userWithUserRole") - .setName("userWithUserRole") - .setEmail("userWithUserRole@nowhere.com")); - tester.organizations().addMember(organization, userWithUserRole); + @Test + public void notification_on_private_project() throws Exception { + // Create a private project using an empty permission template, in order for noone to be able to access it by default + Project project = tester.projects().provision(p -> p.setVisibility("private")); + Permissions.PermissionTemplate permissionTemplate = tester.permissions().generateTemplate(); + tester.permissions().applyTemplate(permissionTemplate, project); + createSampleQProfile(project); + // User having browse permission on the project + User userWithBrowsePermission = tester.users().generate(); + tester.as(userWithBrowsePermission.getLogin()).wsClient().notifications().add(new AddRequest().setType("NewIssues").setChannel("EmailNotificationChannel")); tester.wsClient().permissions().addUser( new AddUserRequest() - .setLogin(userWithUserRole.getLogin()) - .setProjectKey(PROJECT_KEY) + .setLogin(userWithBrowsePermission.getLogin()) + .setProjectKey(project.getKey()) .setPermission("user")); - addNotificationsTo(userWithUserRole); + // User not having browse permission on the project + User userWithoutBrowsePermission = tester.users().generate(); + tester.as(userWithoutBrowsePermission.getLogin()).wsClient().notifications().add(new AddRequest().setType("NewIssues").setChannel("EmailNotificationChannel")); - // Create a user that have User role through Members group - userWithUserRoleThroughGroups = tester.users().generate( - u -> u.setLogin("userWithUserRoleThroughGroups") - .setPassword("userWithUserRoleThroughGroups") - .setName("userWithUserRoleThroughGroups") - .setEmail("userWithUserRoleThroughGroups@nowhere.com")); - tester.organizations().addMember(organization, userWithUserRoleThroughGroups); - addNotificationsTo(userWithUserRoleThroughGroups); + runProjectAnalysis(ORCHESTRATOR, "shared/xoo-sample", + "sonar.projectKey", project.getKey(), + "sonar.projectDate", PAST_ANALYSIS_DATE); + checkNotificationSent(1); - // Create a user that does not belongs to organization - userNotInOrganization = tester.users().generate( - u -> u.setLogin("userNotInOrganization") - .setPassword("userNotInOrganization") - .setName("userNotInOrganization") - .setEmail("userNotInOrganization@nowhere.com")); - addNotificationsTo(userNotInOrganization); + assertThat(extractRecipients(smtpServer.getMessages())) + .containsExactlyInAnyOrder( + format("<%s>", userWithBrowsePermission.getEmail())) + .doesNotContain(userWithoutBrowsePermission.getEmail()); } - void checkEmailSettings() throws Exception { - // Send test email to the test user - tester.wsClient().wsConnector().call(new PostRequest("api/emails/send") - .setParam("to", EMAIL_TEST) - .setParam("message", "This is a test message from SonarQube")) - .failIfNotSuccessful(); - - // We need to wait until all notifications will be delivered - waitUntilAllNotificationsAreDelivered(1); - - assertThat(smtpServer.getMessages()).hasSize(1); - - MimeMessage message = smtpServer.getMessages().get(0).getMimeMessage(); - assertThat(message.getHeader("To", null)).isEqualTo("<" + EMAIL_TEST + ">"); - assertThat((String) message.getContent()).contains("This is a test message from SonarQube"); + private void createSampleQProfile(Project project) { + // Create project + Qualityprofiles.CreateWsResponse.QualityProfile profile = tester.qProfiles().createXooProfile(); + tester.qProfiles() + .activateRule(profile, "xoo:OneIssuePerLine") + .assignQProfileToProject(profile, project); } - private static void waitUntilAllNotificationsAreDelivered(int expectedNumberOfEmails) throws InterruptedException { - for (int i = 0; i < 5; i++) { + private static void checkNotificationSent(int expectedNumberOfEmails) throws InterruptedException { + for (int i = 0; i < 10; i++) { if (smtpServer.getMessages().size() == expectedNumberOfEmails) { break; } Thread.sleep(1_000); } + assertThat(smtpServer.getMessages()).hasSize(expectedNumberOfEmails); + } + + private static void checkNoNotificationSent() throws InterruptedException { + Thread.sleep(1_000); + assertThat(smtpServer.getMessages()).isEmpty(); } private static void clearSmtpMessages() { @@ -384,21 +308,4 @@ public class IssueNotificationsTest { } }).collect(Collectors.toList()); } - - private void addNotificationsTo(Users.CreateWsResponse.User user) { - // Add notifications to the test user - WsClient wsClient = tester.as(user.getLogin()).wsClient(); - wsClient.wsConnector().call(new PostRequest("api/notifications/add") - .setParam("type", "NewIssues") - .setParam("channel", "EmailNotificationChannel")) - .failIfNotSuccessful(); - wsClient.wsConnector().call(new PostRequest("api/notifications/add") - .setParam("type", "ChangesOnMyIssue") - .setParam("channel", "EmailNotificationChannel")) - .failIfNotSuccessful(); - wsClient.wsConnector().call(new PostRequest("api/notifications/add") - .setParam("type", "SQ-MyNewIssues") - .setParam("channel", "EmailNotificationChannel")) - .failIfNotSuccessful(); - } } diff --git a/tests/src/test/java/org/sonarqube/tests/issue/IssueSuite.java b/tests/src/test/java/org/sonarqube/tests/issue/IssueSuite.java index 8ff714fe6e3..cc6a0097e41 100644 --- a/tests/src/test/java/org/sonarqube/tests/issue/IssueSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/issue/IssueSuite.java @@ -41,6 +41,7 @@ import static util.ItUtils.xooPlugin; IssueFilterTest.class, IssueFilterExtensionTest.class, IssueMeasureTest.class, + IssueNotificationsTest.class, IssuePurgeTest.class, IssueSearchTest.class, IssueTrackingTest.class, @@ -62,8 +63,6 @@ public class IssueSuite { // 1 second. Required for notification test. .setServerProperty("sonar.notifications.delay", "1") - .setServerProperty("organization.enabled", "true") - .build(); } diff --git a/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssueAssignTest.java b/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssueAssignTest.java index 01e8e141431..bbe697112ea 100644 --- a/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssueAssignTest.java +++ b/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssueAssignTest.java @@ -158,7 +158,7 @@ public class OrganizationIssueAssignTest { User otherUser = tester.users().generate(); provisionAndAnalyseProject(SAMPLE_PROJECT_KEY, organization); - IssuesPage page = tester.openBrowser().logIn().submitCredentials(user.getLogin()).openIssues(); + IssuesPage page = tester.openBrowser().logIn().submitCredentials(user.getLogin()).openExploreIssues(); page.getFirstIssue() .shouldAllowAssign() .assigneeSearchResultCount(otherUser.getLogin(), 0) @@ -189,7 +189,7 @@ public class OrganizationIssueAssignTest { provisionAndAnalyseProject(SAMPLE_PROJECT_KEY, organization); IssuesPage page = tester.openBrowser() .logIn().submitCredentials(user.getLogin()) - .openIssues(); + .openExploreIssues(); page .bulkChangeOpen() .bulkChangeAssigneeSearchCount(user.getLogin(), 1) diff --git a/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssueSuite.java b/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssueSuite.java index 85381682159..943657e0721 100644 --- a/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssueSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssueSuite.java @@ -37,6 +37,8 @@ public class OrganizationIssueSuite { public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .addPlugin(xooPlugin()) + .setServerProperty("sonar.sonarcloud.enabled", "true") + .build(); } diff --git a/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssuesPageTest.java b/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssuesPageTest.java index 64a162edc7e..205631023f9 100644 --- a/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssuesPageTest.java +++ b/tests/src/test/java/org/sonarqube/tests/issue/OrganizationIssuesPageTest.java @@ -24,9 +24,9 @@ import org.junit.Before; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; +import org.sonarqube.qa.util.Tester; import org.sonarqube.qa.util.pageobjects.Navigation; import org.sonarqube.tests.Category6Suite; -import org.sonarqube.qa.util.Tester; import org.sonarqube.ws.Organizations; import org.sonarqube.ws.Users; import util.issue.IssueRule; @@ -74,7 +74,7 @@ public class OrganizationIssuesPageTest { .issuesCount(2) .componentsShouldNotContain(org1.getName()); - nav.openIssues() + nav.openExploreIssues() .issuesCount(4) .componentsShouldContain("Org "); } diff --git a/tests/src/test/java/org/sonarqube/tests/measure/ProjectActivityPageTest.java b/tests/src/test/java/org/sonarqube/tests/measure/ProjectActivityPageTest.java index 49b87d55eab..3ddb07294e3 100644 --- a/tests/src/test/java/org/sonarqube/tests/measure/ProjectActivityPageTest.java +++ b/tests/src/test/java/org/sonarqube/tests/measure/ProjectActivityPageTest.java @@ -76,7 +76,7 @@ public class ProjectActivityPageTest { } private ProjectActivityPage openPage() { - String userAdmin = tester.users().generateAdministratorOnDefaultOrganization().getLogin(); + String userAdmin = tester.users().generateAdministrator().getLogin(); return tester.openBrowser() .logIn() .submitCredentials(userAdmin, userAdmin) diff --git a/tests/src/test/java/org/sonarqube/tests/measure/ProjectDashboardTest.java b/tests/src/test/java/org/sonarqube/tests/measure/ProjectDashboardTest.java index 72c95312c0f..80176659c54 100644 --- a/tests/src/test/java/org/sonarqube/tests/measure/ProjectDashboardTest.java +++ b/tests/src/test/java/org/sonarqube/tests/measure/ProjectDashboardTest.java @@ -48,7 +48,7 @@ public class ProjectDashboardTest { @Before public void setUp() { - adminUser = tester.users().generateAdministratorOnDefaultOrganization().getLogin(); + adminUser = tester.users().generateAdministrator().getLogin(); } @Test diff --git a/tests/src/test/java/org/sonarqube/tests/organization/BillingTest.java b/tests/src/test/java/org/sonarqube/tests/organization/BillingTest.java index 206ea6167eb..a66254b5ebd 100644 --- a/tests/src/test/java/org/sonarqube/tests/organization/BillingTest.java +++ b/tests/src/test/java/org/sonarqube/tests/organization/BillingTest.java @@ -28,7 +28,6 @@ import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.sonarqube.qa.util.Tester; -import org.sonarqube.qa.util.pageobjects.Navigation; import org.sonarqube.ws.Organizations; import org.sonarqube.ws.Users.CreateWsResponse.User; import org.sonarqube.ws.client.GetRequest; @@ -191,7 +190,7 @@ public class BillingTest { String projectKey = createPublicProject(); tester.settings().setGlobalSettings("sonar.billing.preventUpdatingProjectsVisibilityToPrivate", "true"); - Navigation.create(orchestrator) + tester.openBrowser() .logIn().submitCredentials(orgAdministrator.getLogin()) .openProjectPermissions(projectKey) .shouldBePublic() diff --git a/tests/src/test/java/org/sonarqube/tests/organization/OrganizationSuite.java b/tests/src/test/java/org/sonarqube/tests/organization/OrganizationSuite.java index 024a8849b41..0e77d7c2854 100644 --- a/tests/src/test/java/org/sonarqube/tests/organization/OrganizationSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/organization/OrganizationSuite.java @@ -47,5 +47,7 @@ public class OrganizationSuite { .addPlugin(pluginArtifact("fake-billing-plugin")) .addPlugin(pluginArtifact("ui-extensions-plugin")) + .setServerProperty("sonar.sonarcloud.enabled", "true") + .build(); } diff --git a/tests/src/test/java/org/sonarqube/tests/project/SonarCloudProjectSuite.java b/tests/src/test/java/org/sonarqube/tests/project/OrganizationProjectSuite.java similarity index 56% rename from tests/src/test/java/org/sonarqube/tests/project/SonarCloudProjectSuite.java rename to tests/src/test/java/org/sonarqube/tests/project/OrganizationProjectSuite.java index af9aba43eea..c0675b8159f 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/SonarCloudProjectSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/project/OrganizationProjectSuite.java @@ -20,22 +20,51 @@ package org.sonarqube.tests.project; import com.sonar.orchestrator.Orchestrator; +import com.sonar.orchestrator.util.NetworkUtils; +import java.net.InetAddress; import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; import static util.ItUtils.newOrchestratorBuilder; +import static util.ItUtils.pluginArtifact; import static util.ItUtils.xooPlugin; @RunWith(Suite.class) @Suite.SuiteClasses({ + ProjectBulkDeletionTest.class, + ProjectBulkDeletionPageTest.class, + ProjectDeletionTest.class, + ProjectFilterTest.class, + ProjectKeyUpdateTest.class, + ProjectKeyUpdatePageTest.class, + ProjectLeakPageTest.class, + ProjectLinksTest.class, + ProjectListTest.class, + ProjectProvisioningTest.class, + ProjectSearchTest.class, + ProjectVisibilityPageTest.class, + ProjectsExplorePageTest.class, SonarCloudProjectBadgesTest.class }) -public class SonarCloudProjectSuite { +public class OrganizationProjectSuite { + static final int SEARCH_HTTP_PORT = NetworkUtils.getNextAvailablePort(InetAddress.getLoopbackAddress()); @ClassRule public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() - .addPlugin(xooPlugin()) + // for ES resiliency tests + .setServerProperty("sonar.search.httpPort", "" + SEARCH_HTTP_PORT) + .setServerProperty("sonar.search.recovery.delayInMs", "1000") + .setServerProperty("sonar.search.recovery.minAgeInMs", "3000") + .setServerProperty("sonar.notifications.delay", "1") + .setServerProperty("sonar.sonarcloud.enabled", "true") + + .addPlugin(xooPlugin()) + + // for ProjectSettingsTest + .addPlugin(pluginArtifact("sonar-subcategories-plugin")) + .build(); + } diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectBadgesTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectBadgesTest.java index fe8bc6c1f81..05d243af6e3 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectBadgesTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectBadgesTest.java @@ -48,7 +48,7 @@ public class ProjectBadgesTest { public static Orchestrator orchestrator = ProjectSuite.ORCHESTRATOR; @Rule - public Tester tester = new Tester(orchestrator); + public Tester tester = new Tester(orchestrator).disableOrganizations(); @Test public void public_project_badges() { @@ -72,12 +72,11 @@ public class ProjectBadgesTest { @Test public void private_project_do_not_have_badges() { - Organization org = tester.organizations().generate(); - User user = tester.users().generateAdministrator(org); + User user = tester.users().generateAdministrator(); orchestrator.executeBuild( SonarScanner .create(projectDir("shared/xoo-sample")) - .setProperties("sonar.organization", org.getKey(), "sonar.login", user.getLogin(), "sonar.password", user.getLogin()) + .setProperties("sonar.login", user.getLogin(), "sonar.password", user.getLogin()) ); tester.wsClient().projects().updateVisibility(new UpdateVisibilityRequest().setProject("sample").setVisibility("private")); tester.openBrowser().logIn().submitCredentials(user.getLogin()).openProjectDashboard(PROJECT_KEY); diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectBulkDeletionPageTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectBulkDeletionPageTest.java index 65d64c732d8..4f6446d3312 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectBulkDeletionPageTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectBulkDeletionPageTest.java @@ -36,7 +36,7 @@ import static org.assertj.core.api.Assertions.assertThat; public class ProjectBulkDeletionPageTest { @ClassRule - public static Orchestrator orchestrator = ProjectSuite.ORCHESTRATOR; + public static Orchestrator orchestrator = OrganizationProjectSuite.ORCHESTRATOR; @Rule public Tester tester = new Tester(orchestrator); diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectBulkDeletionTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectBulkDeletionTest.java index a447b97b5e6..bb06173f5b5 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectBulkDeletionTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectBulkDeletionTest.java @@ -38,7 +38,7 @@ import static util.ItUtils.runProjectAnalysis; public class ProjectBulkDeletionTest { @ClassRule - public static Orchestrator orchestrator = ProjectSuite.ORCHESTRATOR; + public static Orchestrator orchestrator = OrganizationProjectSuite.ORCHESTRATOR; @Rule public Tester tester = new Tester(orchestrator); diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectDeletionTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectDeletionTest.java index 5703a13fc6b..355f98138a7 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectDeletionTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectDeletionTest.java @@ -55,13 +55,13 @@ import static util.ItUtils.projectDir; public class ProjectDeletionTest { @ClassRule - public static final Orchestrator orchestrator = ProjectSuite.ORCHESTRATOR; + public static final Orchestrator orchestrator = OrganizationProjectSuite.ORCHESTRATOR; @Rule public TestRule safeguard = new DisableOnDebug(Timeout.seconds(300)); @Rule - public Tester tester = new Tester(orchestrator).setElasticsearchHttpPort(ProjectSuite.SEARCH_HTTP_PORT); + public Tester tester = new Tester(orchestrator).setElasticsearchHttpPort(OrganizationProjectSuite.SEARCH_HTTP_PORT); @Test public void delete_project_by_web_service() { diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectFilterTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectFilterTest.java index 83b243db7dd..c1904bb0c0d 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectFilterTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectFilterTest.java @@ -53,7 +53,7 @@ import static util.ItUtils.sanitizeTimezones; public class ProjectFilterTest { @ClassRule - public static Orchestrator orchestrator = ProjectSuite.ORCHESTRATOR; + public static Orchestrator orchestrator = OrganizationProjectSuite.ORCHESTRATOR; @Rule public Tester tester = new Tester(orchestrator); diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectKeyUpdatePageTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectKeyUpdatePageTest.java index 28abde7863b..a6789d3c74d 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectKeyUpdatePageTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectKeyUpdatePageTest.java @@ -39,7 +39,7 @@ import static util.ItUtils.projectDir; public class ProjectKeyUpdatePageTest { @ClassRule - public static Orchestrator orchestrator = ProjectSuite.ORCHESTRATOR; + public static Orchestrator orchestrator = OrganizationProjectSuite.ORCHESTRATOR; @Rule public Tester tester = new Tester(orchestrator); diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectKeyUpdateTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectKeyUpdateTest.java index b1486e5f539..1afbc28366a 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectKeyUpdateTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectKeyUpdateTest.java @@ -61,14 +61,14 @@ public class ProjectKeyUpdateTest { private static final String PROJECT_KEY = "sample"; @ClassRule - public static final Orchestrator orchestrator = ProjectSuite.ORCHESTRATOR; + public static final Orchestrator orchestrator = OrganizationProjectSuite.ORCHESTRATOR; @Rule public TestRule safeguard = new DisableOnDebug(Timeout.seconds(300)); @Rule public TemporaryFolder temp = new TemporaryFolder(); @Rule - public Tester tester = new Tester(orchestrator).setElasticsearchHttpPort(ProjectSuite.SEARCH_HTTP_PORT); + public Tester tester = new Tester(orchestrator).setElasticsearchHttpPort(OrganizationProjectSuite.SEARCH_HTTP_PORT); @After public void tearDown() throws Exception { diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectLeakPageTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectLeakPageTest.java index 842b0072ea1..4b622997c9c 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectLeakPageTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectLeakPageTest.java @@ -42,7 +42,7 @@ import static util.ItUtils.restoreProfile; public class ProjectLeakPageTest { @ClassRule - public static Orchestrator orchestrator = ProjectSuite.ORCHESTRATOR; + public static Orchestrator orchestrator = OrganizationProjectSuite.ORCHESTRATOR; @Rule public Tester tester = new Tester(orchestrator); diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectLinksTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectLinksTest.java index ffaef594322..441ed60e9e7 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectLinksTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectLinksTest.java @@ -44,7 +44,7 @@ import static util.ItUtils.projectDir; public class ProjectLinksTest { @ClassRule - public static Orchestrator orchestrator = ProjectSuite.ORCHESTRATOR; + public static Orchestrator orchestrator = OrganizationProjectSuite.ORCHESTRATOR; private static Tester tester = new Tester(orchestrator); diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectListTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectListTest.java index 1c26c05f410..fdf71fd9811 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectListTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectListTest.java @@ -34,7 +34,7 @@ import static util.ItUtils.projectDir; public class ProjectListTest { @ClassRule - public static final Orchestrator orchestrator = ProjectSuite.ORCHESTRATOR; + public static final Orchestrator orchestrator = OrganizationProjectSuite.ORCHESTRATOR; @Rule public Tester tester = new Tester(orchestrator); diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectProvisioningTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectProvisioningTest.java index 3e9181e7a6c..2c253402fa1 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectProvisioningTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectProvisioningTest.java @@ -46,13 +46,13 @@ import static org.assertj.core.api.Assertions.assertThat; public class ProjectProvisioningTest { @ClassRule - public static final Orchestrator orchestrator = ProjectSuite.ORCHESTRATOR; + public static final Orchestrator orchestrator = OrganizationProjectSuite.ORCHESTRATOR; @Rule public TestRule safeguard = new DisableOnDebug(Timeout.seconds(300)); @Rule - public Tester tester = new Tester(orchestrator).setElasticsearchHttpPort(ProjectSuite.SEARCH_HTTP_PORT); + public Tester tester = new Tester(orchestrator).setElasticsearchHttpPort(OrganizationProjectSuite.SEARCH_HTTP_PORT); @Test public void provisioned_project_is_available_in_search_engines() { diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectSearchTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectSearchTest.java index baf43119004..57589df9ce1 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectSearchTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectSearchTest.java @@ -41,7 +41,7 @@ import static util.ItUtils.runProjectAnalysis; public class ProjectSearchTest { @ClassRule - public static Orchestrator orchestrator = ProjectSuite.ORCHESTRATOR; + public static Orchestrator orchestrator = OrganizationProjectSuite.ORCHESTRATOR; @Rule public Tester tester = new Tester(orchestrator); diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectSettingsTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectSettingsTest.java index 029cf8a8b5c..a5b35a15d8e 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectSettingsTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectSettingsTest.java @@ -40,13 +40,13 @@ public class ProjectSettingsTest { public static Orchestrator orchestrator = ProjectSuite.ORCHESTRATOR; @Rule - public Tester tester = new Tester(orchestrator); + public Tester tester = new Tester(orchestrator).disableOrganizations(); private String adminUser; @Before public void setUp() { - adminUser = tester.users().generateAdministratorOnDefaultOrganization().getLogin(); + adminUser = tester.users().generateAdministrator().getLogin(); } @Test diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectSuite.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectSuite.java index b16447be779..b469378dce4 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectSuite.java @@ -33,20 +33,8 @@ import static util.ItUtils.xooPlugin; @RunWith(Suite.class) @Suite.SuiteClasses({ ProjectBadgesTest.class, - ProjectBulkDeletionTest.class, - ProjectBulkDeletionPageTest.class, - ProjectDeletionTest.class, - ProjectFilterTest.class, - ProjectKeyUpdateTest.class, - ProjectKeyUpdatePageTest.class, - ProjectLeakPageTest.class, - ProjectLinksTest.class, - ProjectListTest.class, ProjectsPageTest.class, - ProjectProvisioningTest.class, - ProjectSearchTest.class, - ProjectSettingsTest.class, - ProjectVisibilityPageTest.class + ProjectSettingsTest.class }) public class ProjectSuite { static final int SEARCH_HTTP_PORT = NetworkUtils.getNextAvailablePort(InetAddress.getLoopbackAddress()); diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectVisibilityPageTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectVisibilityPageTest.java index 64db22b012d..0525c1f5c62 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectVisibilityPageTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectVisibilityPageTest.java @@ -38,7 +38,7 @@ import static util.ItUtils.projectDir; public class ProjectVisibilityPageTest { @ClassRule - public static Orchestrator orchestrator = ProjectSuite.ORCHESTRATOR; + public static Orchestrator orchestrator = OrganizationProjectSuite.ORCHESTRATOR; @Rule public Tester tester = new Tester(orchestrator); diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectsExplorePageTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectsExplorePageTest.java new file mode 100644 index 00000000000..4c41859ef2d --- /dev/null +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectsExplorePageTest.java @@ -0,0 +1,168 @@ +/* + * SonarQube + * Copyright (C) 2009-2018 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonarqube.tests.project; + +import com.sonar.orchestrator.Orchestrator; +import com.sonar.orchestrator.build.SonarScanner; +import org.junit.BeforeClass; +import org.junit.ClassRule; +import org.junit.Test; +import org.junit.rules.RuleChain; +import org.sonarqube.qa.util.Tester; +import org.sonarqube.qa.util.pageobjects.Navigation; +import org.sonarqube.qa.util.pageobjects.projects.ProjectsPage; +import org.sonarqube.ws.Users; +import org.sonarqube.ws.client.PostRequest; +import org.sonarqube.ws.client.WsClient; +import org.sonarqube.ws.client.favorites.AddRequest; +import org.sonarqube.ws.client.favorites.RemoveRequest; + +import static com.codeborne.selenide.WebDriverRunner.url; +import static org.assertj.core.api.Assertions.assertThat; +import static util.ItUtils.projectDir; + +public class ProjectsExplorePageTest { + + private static final String PROJECT_KEY = "key-foo"; + + @ClassRule + public static Orchestrator orchestrator = OrganizationProjectSuite.ORCHESTRATOR; + + private static Tester tester = new Tester(orchestrator); + + @ClassRule + public static RuleChain ruleChain = RuleChain.outerRule(orchestrator).around(tester); + + @BeforeClass + public static void setUp() { + orchestrator.executeBuild(SonarScanner.create(projectDir("shared/xoo-sample")).setProjectKey(PROJECT_KEY)); + orchestrator.executeBuild(SonarScanner.create(projectDir("duplications/file-duplications")).setProjectKey("key-bar")); + } + + @Test + public void should_display_projects() { + ProjectsPage page = tester.openBrowser().openExploreProjects(); + page.shouldHaveTotal(2); + page.getProjectByKey(PROJECT_KEY) + .shouldHaveMeasure("reliability_rating", "A") + .shouldHaveMeasure("security_rating", "A") + .shouldHaveMeasure("sqale_rating", "A") + .shouldHaveMeasure("duplicated_lines_density", "0.0%") + .shouldHaveMeasure("ncloc", "13") + .shouldHaveMeasure("ncloc", "Xoo"); + } + + @Test + public void should_display_facets() { + ProjectsPage page = tester.openBrowser().openExploreProjects(); + page.getFacetByProperty("duplications") + .shouldHaveValue("1", "1") + .shouldHaveValue("2", "0") + .shouldHaveValue("3", "0") + .shouldHaveValue("4", "0") + .shouldHaveValue("5", "1") + .shouldHaveValue("6", "0"); + } + + @Test + public void should_filter_using_facet() { + ProjectsPage page = tester.openBrowser().openExploreProjects(); + page.shouldHaveTotal(2); + page.getFacetByProperty("duplications").selectValue("3"); + page.shouldHaveTotal(1); + } + + @Test + public void should_add_language_to_facet() { + ProjectsPage page = tester.openBrowser().openExploreProjects(); + page.getFacetByProperty("languages") + .selectOptionItem("xoo2") + .shouldHaveValue("xoo2", "0"); + } + + @Test + public void should_add_tag_to_facet() { + // Add some tags to this project + tester.wsClient().wsConnector().call( + new PostRequest("api/project_tags/set") + .setParam("project", PROJECT_KEY) + .setParam("tags", "aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,zz")); + + ProjectsPage page = tester.openBrowser().openExploreProjects(); + page.getFacetByProperty("tags") + .shouldHaveValue("aa", "1") + .shouldHaveValue("ii", "1") + .selectOptionItem("zz") + .shouldHaveValue("zz", "1"); + } + + @Test + public void should_switch_between_perspectives() { + Users.CreateWsResponse.User administrator = tester.users().generateAdministratorOnDefaultOrganization(); + ProjectsPage page = tester.openBrowser() + .logIn().submitCredentials(administrator.getLogin()) + .openExploreProjects(); + page.changePerspective("Risk"); + assertThat(url()).endsWith("/projects?view=visualizations&visualization=risk"); + page.changePerspective("Leak"); + assertThat(url()).endsWith("/projects?view=leak"); + } + + @Test + public void should_sort_by_facet() { + ProjectsPage page = tester.openBrowser().openExploreProjects(); + page.sortProjects("Duplications"); + page.getProjectByIdx(0).shouldHaveMeasure("duplicated_lines_density", "0.0%"); + page.invertSorting(); + page.getProjectByIdx(0).shouldHaveMeasure("duplicated_lines_density", "63.7%"); + } + + @Test + public void should_search_for_project() { + ProjectsPage page = tester.openBrowser().openExploreProjects(); + page.searchProject("s").shouldHaveTotal(2); + page.searchProject("sam").shouldHaveTotal(1); + } + + @Test + public void should_search_for_project_and_keep_other_filters() { + ProjectsPage page = tester.openBrowser().openExploreProjects(); + page.shouldHaveTotal(2); + page.getFacetByProperty("duplications").selectValue("3"); + page.shouldHaveTotal(1); + page.searchProject("sample").shouldHaveTotal(0); + } + + @Test + public void should_open_permalink() { + String user = tester.users().generate().getLogin(); + Navigation nav = tester.openBrowser().logIn().submitCredentials(user); + + // make a search, so its parameters saved to local storage + nav.openExploreProjects().changePerspective("Leak"); + + // change a page + nav.openHome(); + + // open a permalink to a particular visualization, it must be kept + nav.openProjectsWithQuery("view=visualizations&visualization=coverage"); + assertThat(url()).contains("view=visualizations&visualization=coverage"); + } +} diff --git a/tests/src/test/java/org/sonarqube/tests/project/ProjectsPageTest.java b/tests/src/test/java/org/sonarqube/tests/project/ProjectsPageTest.java index d0a97b761a5..21126cf19ee 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/ProjectsPageTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/ProjectsPageTest.java @@ -21,7 +21,6 @@ package org.sonarqube.tests.project; import com.sonar.orchestrator.Orchestrator; import com.sonar.orchestrator.build.SonarScanner; -import org.junit.Before; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; @@ -35,7 +34,6 @@ import org.sonarqube.ws.client.WsClient; import org.sonarqube.ws.client.favorites.AddRequest; import org.sonarqube.ws.client.favorites.RemoveRequest; -import static com.codeborne.selenide.Selenide.clearBrowserLocalStorage; import static com.codeborne.selenide.WebDriverRunner.url; import static org.assertj.core.api.Assertions.assertThat; import static util.ItUtils.projectDir; @@ -47,7 +45,7 @@ public class ProjectsPageTest { @ClassRule public static Orchestrator orchestrator = ProjectSuite.ORCHESTRATOR; - private static Tester tester = new Tester(orchestrator); + private static Tester tester = new Tester(orchestrator).disableOrganizations(); @ClassRule public static RuleChain ruleChain = RuleChain.outerRule(orchestrator).around(tester); @@ -58,11 +56,6 @@ public class ProjectsPageTest { orchestrator.executeBuild(SonarScanner.create(projectDir("duplications/file-duplications")).setProjectKey("key-bar")); } - @Before - public void before() { - clearBrowserLocalStorage(); - } - @Test public void should_display_projects() { ProjectsPage page = tester.openBrowser().openProjects(); @@ -106,7 +99,7 @@ public class ProjectsPageTest { page.shouldHaveTotal(2).shouldDisplayAllProjectsWidthSort("-analysis_date"); // all projects by default for logged in user - Users.CreateWsResponse.User administrator = tester.users().generateAdministratorOnDefaultOrganization(); + Users.CreateWsResponse.User administrator = tester.users().generateAdministrator(); page = nav.logIn().submitCredentials(administrator.getLogin()).openProjects(); page.shouldHaveTotal(2).shouldDisplayAllProjects(); @@ -158,7 +151,7 @@ public class ProjectsPageTest { @Test public void should_switch_between_perspectives() { - Users.CreateWsResponse.User administrator = tester.users().generateAdministratorOnDefaultOrganization(); + Users.CreateWsResponse.User administrator = tester.users().generateAdministrator(); ProjectsPage page = tester.openBrowser() .logIn().submitCredentials(administrator.getLogin()) .openProjects(); diff --git a/tests/src/test/java/org/sonarqube/tests/project/SonarCloudProjectBadgesTest.java b/tests/src/test/java/org/sonarqube/tests/project/SonarCloudProjectBadgesTest.java index 289539b2820..f8a026857e9 100644 --- a/tests/src/test/java/org/sonarqube/tests/project/SonarCloudProjectBadgesTest.java +++ b/tests/src/test/java/org/sonarqube/tests/project/SonarCloudProjectBadgesTest.java @@ -46,7 +46,7 @@ public class SonarCloudProjectBadgesTest { private static final String SONAR_CLOUD_ORANGE_BADGE = "images/project_badges/sonarcloud-orange.svg"; @ClassRule - public static Orchestrator orchestrator = SonarCloudProjectSuite.ORCHESTRATOR; + public static Orchestrator orchestrator = OrganizationProjectSuite.ORCHESTRATOR; @Rule public Tester tester = new Tester(orchestrator); diff --git a/tests/src/test/java/org/sonarqube/tests/qualityGate/OrganizationQualityGateForSmallChangesetsTest.java b/tests/src/test/java/org/sonarqube/tests/qualityGate/OrganizationQualityGateForSmallChangesetsTest.java index 564f5675af9..6240442c47f 100644 --- a/tests/src/test/java/org/sonarqube/tests/qualityGate/OrganizationQualityGateForSmallChangesetsTest.java +++ b/tests/src/test/java/org/sonarqube/tests/qualityGate/OrganizationQualityGateForSmallChangesetsTest.java @@ -21,30 +21,25 @@ package org.sonarqube.tests.qualityGate; import com.sonar.orchestrator.Orchestrator; import com.sonar.orchestrator.build.SonarScanner; -import java.io.File; -import java.io.IOException; -import java.io.StringReader; -import java.nio.charset.StandardCharsets; -import java.util.Properties; -import org.apache.commons.io.FileUtils; +import java.util.Date; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.sonarqube.qa.util.Tester; -import org.sonarqube.ws.Ce; -import org.sonarqube.ws.MediaTypes; import org.sonarqube.ws.Organizations; +import org.sonarqube.ws.ProjectAnalyses; import org.sonarqube.ws.Projects.CreateWsResponse.Project; import org.sonarqube.ws.Qualitygates; +import org.sonarqube.ws.Qualitygates.ProjectStatusResponse.Status; import org.sonarqube.ws.Users; -import org.sonarqube.ws.client.GetRequest; -import org.sonarqube.ws.client.WsResponse; +import org.sonarqube.ws.client.projectanalyses.SearchRequest; import org.sonarqube.ws.client.qualitygates.CreateConditionRequest; import org.sonarqube.ws.client.qualitygates.ProjectStatusRequest; import org.sonarqube.ws.client.qualitygates.UpdateConditionRequest; +import static org.apache.commons.lang.time.DateUtils.addMonths; import static org.assertj.core.api.Assertions.assertThat; -import static util.ItUtils.getMeasure; +import static util.ItUtils.formatDate; import static util.ItUtils.projectDir; public class OrganizationQualityGateForSmallChangesetsTest { @@ -56,7 +51,7 @@ public class OrganizationQualityGateForSmallChangesetsTest { public Tester tester = new Tester(orchestrator); @Test - public void do_not_fail_quality_gate_with_poor_LEAK_coverage_and_a_max_of_19_lines_of_NEW_code() throws Exception { + public void do_not_fail_quality_gate_with_poor_LEAK_coverage_and_a_max_of_19_lines_of_NEW_code() { Organizations.Organization organization = tester.organizations().generate(); Project project = tester.projects().provision(organization); Qualitygates.CreateResponse qualityGate = tester.qGates().generate(organization); @@ -83,11 +78,10 @@ public class OrganizationQualityGateForSmallChangesetsTest { .setProperty("sonar.password", password) .setProperty("sonar.scm.provider", "xoo") .setProperty("sonar.scm.disabled", "false") - .setProperty("sonar.projectDate", "2013-04-01") + .setProperty("sonar.projectDate", formatDate(addMonths(new Date(), -4))) .setDebugLogs(true); orchestrator.executeBuild(analysis); - assertThat(getMeasure(orchestrator, project.getKey(), "alert_status").getValue()).isEqualTo("OK"); - assertIgnoredConditions("qualitygate/small-changesets/v1-1000-lines", false); + verifyGateStatus(project, Status.OK, false); // small leak => ignore coverage warning or error SonarScanner analysis2 = SonarScanner @@ -98,11 +92,10 @@ public class OrganizationQualityGateForSmallChangesetsTest { .setProperty("sonar.password", password) .setProperty("sonar.scm.provider", "xoo") .setProperty("sonar.scm.disabled", "false") - .setProperty("sonar.projectDate", "2014-04-01") + .setProperty("sonar.projectDate", formatDate(addMonths(new Date(), -3))) .setDebugLogs(true); orchestrator.executeBuild(analysis2); - assertThat(getMeasure(orchestrator, project.getKey(), "alert_status").getValue()).isEqualTo("OK"); - assertIgnoredConditions("qualitygate/small-changesets/v2-1019-lines", true); + verifyGateStatus(project, Status.OK, true); // small leak => if coverage is OK anyways, we do not have to ignore anything tester.wsClient().qualitygates().updateCondition(new UpdateConditionRequest() @@ -121,11 +114,10 @@ public class OrganizationQualityGateForSmallChangesetsTest { .setProperty("sonar.password", password) .setProperty("sonar.scm.provider", "xoo") .setProperty("sonar.scm.disabled", "false") - .setProperty("sonar.projectDate", "2014-04-02") + .setProperty("sonar.projectDate", formatDate(addMonths(new Date(), -2))) .setDebugLogs(true); orchestrator.executeBuild(analysis3); - assertThat(getMeasure(orchestrator, project.getKey(), "alert_status").getValue()).isEqualTo("OK"); - assertIgnoredConditions("qualitygate/small-changesets/v2-1019-lines", false); + verifyGateStatus(project, Status.OK, false); // big leak => use usual behaviour tester.wsClient().qualitygates().updateCondition(new UpdateConditionRequest() @@ -144,40 +136,21 @@ public class OrganizationQualityGateForSmallChangesetsTest { .setProperty("sonar.password", password) .setProperty("sonar.scm.provider", "xoo") .setProperty("sonar.scm.disabled", "false") - .setProperty("sonar.projectDate", "2014-04-03") + .setProperty("sonar.projectDate", formatDate(addMonths(new Date(), -1))) .setDebugLogs(true); orchestrator.executeBuild(analysis4); - assertThat(getMeasure(orchestrator, project.getKey(), "alert_status").getValue()).isEqualTo("ERROR"); - assertIgnoredConditions("qualitygate/small-changesets/v2-1020-lines", false); + verifyGateStatus(project, Status.ERROR, false); } - private void assertIgnoredConditions(String projectDir, boolean expected) throws IOException { - String analysisId = getAnalysisId(getTaskIdInLocalReport(projectDir(projectDir))); - boolean ignoredConditions = tester.wsClient().qualitygates() + private void verifyGateStatus(Project project, Status expectedStatus, boolean expectedIgnoredConditions) { + ProjectAnalyses.SearchResponse analysis = tester.wsClient().projectAnalyses().search(new SearchRequest().setProject(project.getKey())); + String analysisId = analysis.getAnalysesList().get(0).getKey(); + Qualitygates.ProjectStatusResponse.ProjectStatus gateStatus = tester.wsClient().qualitygates() .projectStatus(new ProjectStatusRequest().setAnalysisId(analysisId)) - .getProjectStatus() - .getIgnoredConditions(); - assertThat(ignoredConditions).isEqualTo(expected); - } + .getProjectStatus(); - private String getAnalysisId(String taskId) throws IOException { - WsResponse activity = tester.wsClient() - .wsConnector() - .call(new GetRequest("api/ce/task") - .setParam("id", taskId) - .setMediaType(MediaTypes.PROTOBUF)); - Ce.TaskResponse activityWsResponse = Ce.TaskResponse.parseFrom(activity.contentStream()); - return activityWsResponse.getTask().getAnalysisId(); + assertThat(gateStatus.getStatus()).isEqualTo(expectedStatus); + assertThat(gateStatus.getIgnoredConditions()).isEqualTo(expectedIgnoredConditions); } - private String getTaskIdInLocalReport(File projectDirectory) throws IOException { - File metadata = new File(projectDirectory, ".sonar/report-task.txt"); - assertThat(metadata).exists().isFile(); - // verify properties - Properties props = new Properties(); - props.load(new StringReader(FileUtils.readFileToString(metadata, StandardCharsets.UTF_8))); - assertThat(props.getProperty("ceTaskId")).isNotEmpty(); - - return props.getProperty("ceTaskId"); - } } diff --git a/tests/src/test/java/org/sonarqube/tests/qualityGate/OrganizationQualityGateSuite.java b/tests/src/test/java/org/sonarqube/tests/qualityGate/OrganizationQualityGateSuite.java index 985f8b3a3dc..f91b9cdfbba 100644 --- a/tests/src/test/java/org/sonarqube/tests/qualityGate/OrganizationQualityGateSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/qualityGate/OrganizationQualityGateSuite.java @@ -40,6 +40,7 @@ public class OrganizationQualityGateSuite { public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() // required for notification tests .setServerProperty("sonar.notifications.delay", "1") + .setServerProperty("sonar.sonarcloud.enabled", "true") .addPlugin(pluginArtifact("posttask-plugin")) .addPlugin(xooPlugin()) diff --git a/tests/src/test/java/org/sonarqube/tests/qualityGate/QualityGateTest.java b/tests/src/test/java/org/sonarqube/tests/qualityGate/QualityGateTest.java index 05f7871f364..151bdc1d4a9 100644 --- a/tests/src/test/java/org/sonarqube/tests/qualityGate/QualityGateTest.java +++ b/tests/src/test/java/org/sonarqube/tests/qualityGate/QualityGateTest.java @@ -60,7 +60,6 @@ import org.sonarqube.ws.client.qualitygates.SelectRequest; import org.sonarqube.ws.client.qualitygates.SetAsDefaultRequest; import org.sonarqube.ws.client.qualitygates.UpdateConditionRequest; -import static java.lang.String.format; import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.groups.Tuple.tuple; @@ -251,13 +250,13 @@ public class QualityGateTest { Qualitygates.CreateResponse qualityGate = tester.qGates().generate(); expectHttpError(400, - format("Invalid value 'INVALID' for metric 'ncloc'"), + "Invalid value 'INVALID' for metric 'Lines of Code'", () -> tester.qGates().service().createCondition(new CreateConditionRequest().setGateId(Long.toString(qualityGate.getId())).setMetric("ncloc").setOp("GT").setWarning("INVALID"))); expectHttpError(400, - format("User '%s' is not member of organization '%s'"), + "Invalid value '10d' for metric 'Technical Debt'", () -> tester.qGates().service().createCondition(new CreateConditionRequest().setGateId(Long.toString(qualityGate.getId())).setMetric("sqale_index").setOp("GT").setWarning("10d"))); expectHttpError(400, - format("User '%s' is not member of organization '%s'"), + "Invalid value '10%' for metric 'Coverage'", () -> tester.qGates().service().createCondition(new CreateConditionRequest().setGateId(Long.toString(qualityGate.getId())).setMetric("coverage").setOp("GT").setWarning("10%"))); } diff --git a/tests/src/test/java/org/sonarqube/tests/serverSystem/HttpHeadersTest.java b/tests/src/test/java/org/sonarqube/tests/serverSystem/HttpHeadersTest.java index 5b8688a4201..5eead374ed4 100644 --- a/tests/src/test/java/org/sonarqube/tests/serverSystem/HttpHeadersTest.java +++ b/tests/src/test/java/org/sonarqube/tests/serverSystem/HttpHeadersTest.java @@ -20,7 +20,6 @@ package org.sonarqube.tests.serverSystem; import com.sonar.orchestrator.Orchestrator; -import org.sonarqube.tests.Category4Suite; import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -29,6 +28,7 @@ import okhttp3.Response; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; +import org.sonarqube.tests.Category4Suite; import static com.google.common.io.Files.getFileExtension; import static org.assertj.core.api.Assertions.assertThat; @@ -77,7 +77,7 @@ public class HttpHeadersTest { @Test public void verify_headers_of_css() { - Response response = call(orchestrator.getServer().getUrl() + "/css/sonar." + JS_HASH + ".css"); + Response response = call(orchestrator.getServer().getUrl() + "/css/main." + JS_HASH + ".css"); verifySecurityHeaders(response); verifyContentType(response, "text/css"); @@ -86,7 +86,7 @@ public class HttpHeadersTest { @Test public void verify_headers_of_js() { - Response response = call(orchestrator.getServer().getUrl() + "/js/app." + JS_HASH + ".js"); + Response response = call(orchestrator.getServer().getUrl() + "/js/main." + JS_HASH + ".js"); verifySecurityHeaders(response); verifyContentType(response, "application/javascript"); @@ -152,8 +152,9 @@ public class HttpHeadersTest { String fileName = Files.list(cssFolder.toPath()) .map(path -> path.toFile().getName()) .filter(name -> getFileExtension(name).equals("css")) + .filter(name -> name.startsWith("main")) .findFirst() - .orElseThrow(() -> new IllegalStateException("sonar.css hasn't been found")); - return fileName.replace("sonar.", "").replace(".css", ""); + .orElseThrow(() -> new IllegalStateException("css file hasn't been found")); + return fileName.replace("main.", "").replace(".css", ""); } } diff --git a/tests/src/test/java/org/sonarqube/tests/settings/ValidatorsTest.java b/tests/src/test/java/org/sonarqube/tests/settings/ValidatorsTest.java index 99bd3191ce9..d1c73059120 100644 --- a/tests/src/test/java/org/sonarqube/tests/settings/ValidatorsTest.java +++ b/tests/src/test/java/org/sonarqube/tests/settings/ValidatorsTest.java @@ -78,7 +78,8 @@ public class ValidatorsTest { .assertSettingValueCanBeSaved(elementSelector) .assertSettingValueCanBeCanceled(elementSelector); - page.clickOnCancel(elementSelector).assertSettingValueIsNotedAsDefault(elementSelector); + page.clickOnCancel(elementSelector) + .assertSettingValueIsNotedAsDefault(elementSelector); } @Test @@ -116,7 +117,8 @@ public class ValidatorsTest { .assertSettingValueCanBeSaved(elementSelector) .assertSettingValueCanBeCanceled(elementSelector); - page.clickOnCancel(elementSelector).assertInputCount(elementSelector, 1); + page.clickOnCancel(elementSelector) + .assertInputCount(elementSelector, 1); } private void analyzeSample() { diff --git a/tests/src/test/java/org/sonarqube/tests/user/NotificationsWsTest.java b/tests/src/test/java/org/sonarqube/tests/user/NotificationsWsTest.java index 2dc9de4022c..5874195280c 100644 --- a/tests/src/test/java/org/sonarqube/tests/user/NotificationsWsTest.java +++ b/tests/src/test/java/org/sonarqube/tests/user/NotificationsWsTest.java @@ -97,7 +97,7 @@ public class NotificationsWsTest { @Test public void add_global_and_project_notifications_on_another_user_as_a_system_administrator() { - Users.CreateWsResponse.User admin = tester.users().generateAdministratorOnDefaultOrganization(); + Users.CreateWsResponse.User admin = tester.users().generateAdministrator(); Users.CreateWsResponse.User user = tester.users().generate(); assertThat(tester.as(user.getLogin()).wsClient().notifications().list(new ListRequest()).getNotificationsList()).isEmpty(); Projects.CreateWsResponse.Project project = tester.projects().provision(); @@ -114,7 +114,7 @@ public class NotificationsWsTest { @Test public void remove_global_and_project_notifications_on_another_user_as_a_system_administrator() { - Users.CreateWsResponse.User admin = tester.users().generateAdministratorOnDefaultOrganization(); + Users.CreateWsResponse.User admin = tester.users().generateAdministrator(); Users.CreateWsResponse.User user = tester.users().generate(); assertThat(tester.as(user.getLogin()).wsClient().notifications().list(new ListRequest()).getNotificationsList()).isEmpty(); Projects.CreateWsResponse.Project project = tester.projects().provision(); diff --git a/tests/src/test/java/org/sonarqube/tests/user/SonarCloudUserSuite.java b/tests/src/test/java/org/sonarqube/tests/user/SonarCloudUserSuite.java index afc1db96145..b0a677fe7aa 100644 --- a/tests/src/test/java/org/sonarqube/tests/user/SonarCloudUserSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/user/SonarCloudUserSuite.java @@ -25,6 +25,7 @@ import org.junit.ClassRule; import org.junit.runner.RunWith; import org.junit.runners.Suite; +import static util.ItUtils.newOrchestratorBuilder; import static util.ItUtils.xooPlugin; @RunWith(Suite.class) @@ -35,7 +36,7 @@ import static util.ItUtils.xooPlugin; public class SonarCloudUserSuite { @ClassRule - public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + public static final Orchestrator ORCHESTRATOR = newOrchestratorBuilder() .addPlugin(xooPlugin()) .setServerProperty("sonar.sonarcloud.enabled", "true") diff --git a/tests/src/test/java/org/sonarqube/tests/webhook/WebhooksSuite.java b/tests/src/test/java/org/sonarqube/tests/webhook/WebhooksSuite.java index e3bc89f9269..8e8d0023081 100644 --- a/tests/src/test/java/org/sonarqube/tests/webhook/WebhooksSuite.java +++ b/tests/src/test/java/org/sonarqube/tests/webhook/WebhooksSuite.java @@ -41,5 +41,7 @@ public class WebhooksSuite { // reduce memory for Elasticsearch .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") + .setServerProperty("sonar.sonarcloud.enabled", "true") + .build(); } -- 2.39.5