Source available metrics (#24879)
* Expose metrics under a source available license * do not assume Cluster() * allow metrics if licensed or dev * temporary vet override * simplify BULID_TAGS handling * auto clean old imports.go * fix license listener * e2e test metrics & license semantics * update from enterprise * switch back to mattermost-govet/v2@new now * update metrics from upstream * Update license_spec.js Co-authored-by: Saturnino Abril <saturnino.abril@gmail.com> * Update license_spec.js Co-authored-by: Saturnino Abril <saturnino.abril@gmail.com> * Update e2e-tests/cypress/tests/integration/channels/enterprise/metrics/license_spec.js Co-authored-by: Saturnino Abril <saturnino.abril@gmail.com> * Update e2e-tests/cypress/tests/integration/channels/enterprise/metrics/license_spec.js * split up specs * require/delete license earlier in e2e test * expanded expect to debug failures * more logging * Revert "more logging" This reverts commit 0bc513fd926c07a0c6050f4b4c742e856d8dc435. * e2e: try deleting license first * update from enterprise * toggleMetricsOn to work around license delete * eslint * ensure admin before deleting license * update from enterprise * updates from enterprise * fix cypress logging * temp: log at DEBUG for Cypress tests --------- Co-authored-by: Saturnino Abril <saturnino.abril@gmail.com> Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
6184c36e0b
Коммит
b05093d508
@@ -0,0 +1,37 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
export const checkMetrics = (expectedStatusCode) => {
|
||||
cy.apiGetConfig().then(({config}) => {
|
||||
const baseURL = new URL(Cypress.config('baseUrl'));
|
||||
baseURL.port = config.MetricsSettings.ListenAddress.replace(/^.*:/, '');
|
||||
baseURL.pathname = '/metrics';
|
||||
|
||||
cy.log({name: 'Metrics License', message: `Checking metrics at ${baseURL.toString()}`});
|
||||
cy.request({
|
||||
headers: {'X-Requested-With': 'XMLHttpRequest'},
|
||||
url: baseURL.toString(),
|
||||
method: 'GET',
|
||||
failOnStatusCode: false,
|
||||
}).then((response) => {
|
||||
expect(response.headers['Content-Type'], 'should not hit webapp').not.to.equal('text/html');
|
||||
expect(response.status, 'should match expected status code').to.equal(expectedStatusCode);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// toggleMetricsOn turns metrics off and back on, forcing it to be tested against the current
|
||||
// license. When, in the future, the product detects license removal and does this automatically,
|
||||
// this helper won't be required.
|
||||
export const toggleMetricsOn = () => {
|
||||
cy.apiUpdateConfig({
|
||||
MetricsSettings: {
|
||||
Enable: false,
|
||||
},
|
||||
});
|
||||
cy.apiUpdateConfig({
|
||||
MetricsSettings: {
|
||||
Enable: true,
|
||||
},
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,44 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
// ***************************************************************
|
||||
// - [#] indicates a test step (e.g. # Go to a page)
|
||||
// - [*] indicates an assertion (e.g. * Check the title)
|
||||
// - Use element ID when selecting an element. Create one if none.
|
||||
// ***************************************************************
|
||||
|
||||
// Stage: @prod
|
||||
// Group: @channels @enterprise @metrics @not_cloud @license_removal
|
||||
|
||||
import {checkMetrics, toggleMetricsOn} from './helper';
|
||||
|
||||
describe('Metrics > No license', () => {
|
||||
before(() => {
|
||||
cy.shouldNotRunOnCloudEdition();
|
||||
cy.apiAdminLogin();
|
||||
cy.apiDeleteLicense();
|
||||
toggleMetricsOn();
|
||||
});
|
||||
|
||||
it('should enable metrics in BUILD_NUMBER == dev environments', () => {
|
||||
cy.apiGetConfig(true).then(({config}) => {
|
||||
if (config.BuildNumber !== 'dev') {
|
||||
Cypress.log({name: 'Metrics License', message: `Skipping test since BUILD_NUMBER = ${config.BuildNumber}`});
|
||||
return;
|
||||
}
|
||||
|
||||
checkMetrics(200);
|
||||
});
|
||||
});
|
||||
|
||||
it('should disable metrics in BUILD_NUMBER != dev environments', () => {
|
||||
cy.apiGetConfig(true).then(({config}) => {
|
||||
if (config.BuildNumber === 'dev') {
|
||||
Cypress.log({name: 'Metrics License', message: `Skipping test since BUILD_NUMBER = ${config.BuildNumber}`});
|
||||
return;
|
||||
}
|
||||
|
||||
checkMetrics(404);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,43 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
// ***************************************************************
|
||||
// - [#] indicates a test step (e.g. # Go to a page)
|
||||
// - [*] indicates an assertion (e.g. * Check the title)
|
||||
// - Use element ID when selecting an element. Create one if none.
|
||||
// ***************************************************************
|
||||
|
||||
// Stage: @prod
|
||||
// Group: @channels @enterprise @metrics @not_cloud
|
||||
|
||||
import {checkMetrics, toggleMetricsOn} from './helper';
|
||||
|
||||
describe('Metrics > License', () => {
|
||||
before(() => {
|
||||
cy.shouldNotRunOnCloudEdition();
|
||||
cy.apiRequireLicense();
|
||||
toggleMetricsOn();
|
||||
});
|
||||
|
||||
it('should enable metrics in BUILD_NUMBER == dev environments', () => {
|
||||
cy.apiGetConfig(true).then(({config}) => {
|
||||
if (config.BuildNumber !== 'dev') {
|
||||
Cypress.log({name: 'Metrics License', message: `Skipping test since BUILD_NUMBER = ${config.BuildNumber}`});
|
||||
return;
|
||||
}
|
||||
|
||||
checkMetrics(200);
|
||||
});
|
||||
});
|
||||
|
||||
it('should enable metrics in BUILD_NUMBER != dev environments', () => {
|
||||
cy.apiGetConfig(true).then(({config}) => {
|
||||
if (config.BuildNumber === 'dev') {
|
||||
Cypress.log({name: 'Metrics License', message: `Skipping test since BUILD_NUMBER = ${config.BuildNumber}`});
|
||||
return;
|
||||
}
|
||||
|
||||
checkMetrics(200);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -162,7 +162,7 @@
|
||||
"ConsoleJson": true,
|
||||
"EnableColor": false,
|
||||
"EnableFile": true,
|
||||
"FileLevel": "INFO",
|
||||
"FileLevel": "DEBUG",
|
||||
"FileJson": true,
|
||||
"FileLocation": "",
|
||||
"EnableWebhookDebugging": true,
|
||||
|
||||
Ссылка в новой задаче
Block a user