Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v5 #320

Merged
merged 12 commits into from
Sep 11, 2024
4 changes: 2 additions & 2 deletions src/db/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
FROM timescale/timescaledb:2.4.1-pg13
FROM timescale/timescaledb-ha:pg16.4-ts2.16.1-all
ENV POSTGRES_DB jtl_report
COPY schema.sql /docker-entrypoint-initdb.d/
COPY schema.sql /docker-entrypoint-initdb.d/
19 changes: 9 additions & 10 deletions src/server/controllers/item/shared/item-data-processing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,17 @@
updateItemApdexSettings,
chartOverviewStatusCodesQuery,
responseTimePerLabelHistogram,
findRawData,
getBaselineItemWithStats,
findGroupedErrors,
findTop5ErrorsByLabel,
threadsPerThreadGroup,
threadsPerThreadGroup, getDownsampledRawData,
} from "../../../queries/items"
import { ReportStatus } from "../../../queries/items.model"
import { getScenarioSettings } from "../../../queries/scenario"
import { sendDegradationNotifications, sendReportNotifications } from "../../../utils/notifications/send-notification"
import { scenarioThresholdsCalc } from "../utils/scenario-thresholds-calc"
import { extraIntervalMilliseconds } from "./extra-intervals-mapping"
import { AnalyticsEvent } from "../../../utils/analytics/anyltics-event"
import { downsampleData } from "../../../utils/lttb"
import moment = require("moment");
import { DataProcessingException } from "../../../errors/data-processing-exceptions"

export const itemDataProcessing = async ({ projectName, scenarioName, itemId }) => {
Expand All @@ -46,6 +43,7 @@
let distributedThreads = null
let sutMetrics = []
let apdex = []
let rawDataArray = null

Check warning on line 46 in src/server/controllers/item/shared/item-data-processing.ts

View check run for this annotation

Codecov / codecov/patch

src/server/controllers/item/shared/item-data-processing.ts#L46

Added line #L46 was not covered by tests

try {
const aggOverview = await db.one(aggOverviewQuery(itemId))
Expand All @@ -55,13 +53,12 @@
const responseFailures = await db.manyOrNone(responseMessageFailures(itemId))
const scenarioSettings = await db.one(getScenarioSettings(projectName, scenarioName))

let rawData = await db.manyOrNone(findRawData(itemId))
let rawDataArray = rawData?.map(row => [moment(row.timestamp).valueOf(), row.elapsed])
const rawDataDownSampled = downsampleData(rawDataArray, MAX_SCATTER_CHART_POINTS)
let rawDownsampledData = await db.manyOrNone(getDownsampledRawData(itemId, MAX_SCATTER_CHART_POINTS))

Check warning on line 56 in src/server/controllers/item/shared/item-data-processing.ts

View check run for this annotation

Codecov / codecov/patch

src/server/controllers/item/shared/item-data-processing.ts#L56

Added line #L56 was not covered by tests
rawDataArray = rawDownsampledData?.map(row => [row.timestamp, row.value])
rawDownsampledData = null

Check warning on line 58 in src/server/controllers/item/shared/item-data-processing.ts

View check run for this annotation

Codecov / codecov/patch

src/server/controllers/item/shared/item-data-processing.ts#L58

Added line #L58 was not covered by tests

const groupedErrors = await db.manyOrNone(findGroupedErrors(itemId))
const top5ErrorsByLabel = await db.manyOrNone(findTop5ErrorsByLabel(itemId))
rawData = null
rawDataArray = null

if (aggOverview.number_of_sut_hostnames > 1) {
sutMetrics = await db.many(sutOverviewQuery(itemId))
Expand Down Expand Up @@ -153,7 +150,7 @@
await t.none(saveItemStats(itemId, JSON.stringify(labelStats),
overview, JSON.stringify(sutOverview), JSON.stringify(errors)))
await t.none(savePlotData(itemId, JSON.stringify(chartData), JSON.stringify(extraChartData),
JSON.stringify(responseTimeHistogram), JSON.stringify(rawDataDownSampled)))
JSON.stringify(responseTimeHistogram), JSON.stringify(rawDataArray)))
await t.none(updateItem(itemId, ReportStatus.Ready, overview.startDate))
})

Expand All @@ -170,5 +167,7 @@
} catch(error) {
throw new DataProcessingException(
`Error while processing dataId: ${itemId} for item: ${itemId}, error: ${error}`)
} finally {
rawDataArray = []

Check warning on line 171 in src/server/controllers/item/shared/item-data-processing.ts

View check run for this annotation

Codecov / codecov/patch

src/server/controllers/item/shared/item-data-processing.ts#L171

Added line #L171 was not covered by tests
}
}
10 changes: 6 additions & 4 deletions src/server/queries/items.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,13 @@ export const findItemStats = (testItem) => {
}
}

export const findRawData = (itemId) => {
export const getDownsampledRawData = (itemId: string, threshold: number) => {
return {
text: `SELECT timestamp, elapsed
FROM jtl.samples WHERE item_id = $1`,
values: [itemId],
text: `SELECT (EXTRACT(epoch FROM time) * 1000)::bigint as timestamp, value
FROM unnest((
SELECT lttb(timestamp, elapsed, $2)
FROM jtl.samples WHERE item_id = $1));`,
values: [itemId, threshold],
}
}

Expand Down
81 changes: 0 additions & 81 deletions src/server/utils/lttb.ts

This file was deleted.

Loading