Skip to content

Commit 0b3a928

Browse files
authored
test: Migrated memcached tests to versioned tests (#2231)
1 parent 9a4dddc commit 0b3a928

File tree

6 files changed

+64
-42
lines changed

6 files changed

+64
-42
lines changed

.github/workflows/ci-workflow.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,6 @@ jobs:
140140
node-version: ${{ matrix.node-version }}
141141
- name: Install Dependencies
142142
run: npm install
143-
- name: Run Docker Services
144-
run: npm run services
145143
- name: Run Integration Tests
146144
run: npm run integration
147145
- name: Run ESM Integration Tests

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,6 @@
247247
"koa-router": "^12.0.1",
248248
"lint-staged": "^11.0.0",
249249
"lockfile-lint": "^4.9.6",
250-
"memcached": ">=0.2.8",
251250
"nock": "11.8.0",
252251
"proxy": "^2.1.1",
253252
"proxyquire": "^1.8.0",

test/lib/agent_helper.js

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ const path = require('path')
99
const fs = require('fs').promises
1010
const Agent = require('../../lib/agent')
1111
const API = require('../../api')
12-
const params = require('../lib/params')
1312
const zlib = require('zlib')
1413
const copy = require('../../lib/util/copy')
1514
const { defaultAttributeConfig } = require('./fixtures')
@@ -312,21 +311,6 @@ helper.runInSegment = (agent, name, callback) => {
312311
return tracer.addSegment(name, null, null, null, callback)
313312
}
314313

315-
/**
316-
* Stub to bootstrap a memcached instance
317-
*
318-
* @param {Function} callback The operations to be performed while the server
319-
* is running.
320-
*/
321-
helper.bootstrapMemcached = (callback) => {
322-
const Memcached = require('memcached')
323-
const memcached = new Memcached(params.memcached_host + ':' + params.memcached_port)
324-
memcached.flush((err) => {
325-
memcached.end()
326-
callback(err)
327-
})
328-
}
329-
330314
/**
331315
* Select Redis DB index and flush entries in it.
332316
*

test/integration/instrumentation/memcached.tap.js renamed to test/versioned/memcached/memcached.tap.js

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,22 @@ const findSegment = require('../../lib/metrics_helper').findSegment
1313
const getMetricHostName = require('../../lib/metrics_helper').getMetricHostName
1414
const util = require('util')
1515

16-
const bootstrapMemcached = util.promisify(helper.bootstrapMemcached)
17-
1816
const METRICS_ASSERTIONS = 10
1917

18+
/**
19+
* Flushes memcached to start clean
20+
*
21+
* @param {object} memcached instance of memcached
22+
*/
23+
function flush(memcached) {
24+
return new Promise((resolve, reject) => {
25+
memcached.flush((err) => {
26+
memcached.end()
27+
err ? reject(err) : resolve()
28+
})
29+
})
30+
}
31+
2032
test('memcached instrumentation', { timeout: 5000 }, function (t) {
2133
t.autoend()
2234

@@ -29,20 +41,17 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) {
2941
t.autoend()
3042

3143
t.beforeEach(async () => {
32-
await bootstrapMemcached()
33-
3444
agent = helper.instrumentMockedAgent()
3545

3646
Memcached = require('memcached')
3747
memcached = new Memcached(params.memcached_host + ':' + params.memcached_port)
38-
3948
const hostName = getMetricHostName(agent, params.memcached_host)
4049
HOST_ID = hostName + '/' + params.memcached_port
4150
})
4251

43-
t.afterEach(() => {
52+
t.afterEach(async () => {
4453
agent && helper.unloadAgent(agent)
45-
memcached && memcached.end()
54+
await flush(memcached)
4655
})
4756

4857
t.test('touch()', function (t) {
@@ -412,8 +421,6 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) {
412421
t.autoend()
413422

414423
t.beforeEach(async () => {
415-
await bootstrapMemcached()
416-
417424
agent = helper.instrumentMockedAgent()
418425

419426
// capture attributes
@@ -423,9 +430,9 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) {
423430
memcached = new Memcached(params.memcached_host + ':' + params.memcached_port)
424431
})
425432

426-
t.afterEach(() => {
433+
t.afterEach(async () => {
427434
helper.unloadAgent(agent)
428-
memcached.end()
435+
await flush(memcached)
429436
})
430437

431438
t.test('get()', function (t) {
@@ -494,17 +501,15 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) {
494501
t.autoend()
495502

496503
t.beforeEach(async () => {
497-
await bootstrapMemcached()
498-
499504
agent = helper.instrumentMockedAgent()
500505

501506
Memcached = require('memcached')
502507
memcached = new Memcached(params.memcached_host + ':' + params.memcached_port)
503508
})
504509

505-
t.afterEach(() => {
510+
t.afterEach(async () => {
506511
helper.unloadAgent(agent)
507-
memcached.end()
512+
await flush(memcached)
508513
})
509514

510515
t.test('get()', function (t) {
@@ -568,8 +573,6 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) {
568573
t.autoend()
569574

570575
t.beforeEach(async () => {
571-
await bootstrapMemcached()
572-
573576
agent = helper.instrumentMockedAgent()
574577

575578
// disable
@@ -579,9 +582,9 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) {
579582
memcached = new Memcached(params.memcached_host + ':' + params.memcached_port)
580583
})
581584

582-
t.afterEach(() => {
585+
t.afterEach(async () => {
583586
helper.unloadAgent(agent)
584-
memcached.end()
587+
await flush(memcached)
585588
})
586589

587590
t.test('get()', function (t) {
@@ -643,8 +646,6 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) {
643646
const realServer = params.memcached_host + ':' + params.memcached_port
644647

645648
t.beforeEach(async () => {
646-
await bootstrapMemcached()
647-
648649
Memcached = require('memcached')
649650
origCommand = Memcached.prototype.command
650651
/* eslint-disable no-unused-vars */
@@ -664,9 +665,9 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) {
664665
}
665666
})
666667

667-
t.afterEach(() => {
668+
t.afterEach(async () => {
668669
helper.unloadAgent(agent)
669-
memcached.end()
670+
await flush(memcached)
670671
if (origCommand) {
671672
Memcached.prototype.command = origCommand
672673
}

test/versioned/memcached/newrelic.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Copyright 2024 New Relic Corporation. All rights reserved.
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
'use strict'
7+
8+
exports.config = {
9+
app_name: ['My Application'],
10+
license_key: 'license key here',
11+
utilization: {
12+
detect_aws: false,
13+
detect_pcf: false,
14+
detect_azure: false,
15+
detect_gcp: false,
16+
detect_docker: false
17+
},
18+
logging: {
19+
enabled: false
20+
}
21+
}

test/versioned/memcached/package.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"name": "memcached-test",
3+
"targets": [{"name":"memcached","minAgentVersion":"1.26.2"}],
4+
"version": "0.0.0",
5+
"private": true,
6+
"tests": [
7+
{
8+
"engines": {
9+
"node": ">=16"
10+
},
11+
"dependencies": {
12+
"memcached": ">=2.2.0"
13+
},
14+
"files": [
15+
"memcached.tap.js"
16+
]
17+
}
18+
]
19+
}

0 commit comments

Comments
 (0)