From 0b3a9284dc5bdc7755d176739186ea3c15cde23e Mon Sep 17 00:00:00 2001 From: Bob Evans Date: Thu, 30 May 2024 08:55:38 -0400 Subject: [PATCH] test: Migrated `memcached` tests to versioned tests (#2231) --- .github/workflows/ci-workflow.yml | 2 - package.json | 1 - test/lib/agent_helper.js | 16 ------- .../memcached}/memcached.tap.js | 47 ++++++++++--------- test/versioned/memcached/newrelic.js | 21 +++++++++ test/versioned/memcached/package.json | 19 ++++++++ 6 files changed, 64 insertions(+), 42 deletions(-) rename test/{integration/instrumentation => versioned/memcached}/memcached.tap.js (97%) create mode 100644 test/versioned/memcached/newrelic.js create mode 100644 test/versioned/memcached/package.json diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index a678503583..b65bf4401e 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -140,8 +140,6 @@ jobs: node-version: ${{ matrix.node-version }} - name: Install Dependencies run: npm install - - name: Run Docker Services - run: npm run services - name: Run Integration Tests run: npm run integration - name: Run ESM Integration Tests diff --git a/package.json b/package.json index 1bc9d264a7..b6bb940aba 100644 --- a/package.json +++ b/package.json @@ -247,7 +247,6 @@ "koa-router": "^12.0.1", "lint-staged": "^11.0.0", "lockfile-lint": "^4.9.6", - "memcached": ">=0.2.8", "nock": "11.8.0", "proxy": "^2.1.1", "proxyquire": "^1.8.0", diff --git a/test/lib/agent_helper.js b/test/lib/agent_helper.js index 7f73a1201f..b68e6ebd92 100644 --- a/test/lib/agent_helper.js +++ b/test/lib/agent_helper.js @@ -9,7 +9,6 @@ const path = require('path') const fs = require('fs').promises const Agent = require('../../lib/agent') const API = require('../../api') -const params = require('../lib/params') const zlib = require('zlib') const copy = require('../../lib/util/copy') const { defaultAttributeConfig } = require('./fixtures') @@ -312,21 +311,6 @@ helper.runInSegment = (agent, name, callback) => { return tracer.addSegment(name, null, null, null, callback) } -/** - * Stub to bootstrap a memcached instance - * - * @param {Function} callback The operations to be performed while the server - * is running. - */ -helper.bootstrapMemcached = (callback) => { - const Memcached = require('memcached') - const memcached = new Memcached(params.memcached_host + ':' + params.memcached_port) - memcached.flush((err) => { - memcached.end() - callback(err) - }) -} - /** * Select Redis DB index and flush entries in it. * diff --git a/test/integration/instrumentation/memcached.tap.js b/test/versioned/memcached/memcached.tap.js similarity index 97% rename from test/integration/instrumentation/memcached.tap.js rename to test/versioned/memcached/memcached.tap.js index 161be46245..bca04ef074 100644 --- a/test/integration/instrumentation/memcached.tap.js +++ b/test/versioned/memcached/memcached.tap.js @@ -13,10 +13,22 @@ const findSegment = require('../../lib/metrics_helper').findSegment const getMetricHostName = require('../../lib/metrics_helper').getMetricHostName const util = require('util') -const bootstrapMemcached = util.promisify(helper.bootstrapMemcached) - const METRICS_ASSERTIONS = 10 +/** + * Flushes memcached to start clean + * + * @param {object} memcached instance of memcached + */ +function flush(memcached) { + return new Promise((resolve, reject) => { + memcached.flush((err) => { + memcached.end() + err ? reject(err) : resolve() + }) + }) +} + test('memcached instrumentation', { timeout: 5000 }, function (t) { t.autoend() @@ -29,20 +41,17 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) { t.autoend() t.beforeEach(async () => { - await bootstrapMemcached() - agent = helper.instrumentMockedAgent() Memcached = require('memcached') memcached = new Memcached(params.memcached_host + ':' + params.memcached_port) - const hostName = getMetricHostName(agent, params.memcached_host) HOST_ID = hostName + '/' + params.memcached_port }) - t.afterEach(() => { + t.afterEach(async () => { agent && helper.unloadAgent(agent) - memcached && memcached.end() + await flush(memcached) }) t.test('touch()', function (t) { @@ -412,8 +421,6 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) { t.autoend() t.beforeEach(async () => { - await bootstrapMemcached() - agent = helper.instrumentMockedAgent() // capture attributes @@ -423,9 +430,9 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) { memcached = new Memcached(params.memcached_host + ':' + params.memcached_port) }) - t.afterEach(() => { + t.afterEach(async () => { helper.unloadAgent(agent) - memcached.end() + await flush(memcached) }) t.test('get()', function (t) { @@ -494,17 +501,15 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) { t.autoend() t.beforeEach(async () => { - await bootstrapMemcached() - agent = helper.instrumentMockedAgent() Memcached = require('memcached') memcached = new Memcached(params.memcached_host + ':' + params.memcached_port) }) - t.afterEach(() => { + t.afterEach(async () => { helper.unloadAgent(agent) - memcached.end() + await flush(memcached) }) t.test('get()', function (t) { @@ -568,8 +573,6 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) { t.autoend() t.beforeEach(async () => { - await bootstrapMemcached() - agent = helper.instrumentMockedAgent() // disable @@ -579,9 +582,9 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) { memcached = new Memcached(params.memcached_host + ':' + params.memcached_port) }) - t.afterEach(() => { + t.afterEach(async () => { helper.unloadAgent(agent) - memcached.end() + await flush(memcached) }) t.test('get()', function (t) { @@ -643,8 +646,6 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) { const realServer = params.memcached_host + ':' + params.memcached_port t.beforeEach(async () => { - await bootstrapMemcached() - Memcached = require('memcached') origCommand = Memcached.prototype.command /* eslint-disable no-unused-vars */ @@ -664,9 +665,9 @@ test('memcached instrumentation', { timeout: 5000 }, function (t) { } }) - t.afterEach(() => { + t.afterEach(async () => { helper.unloadAgent(agent) - memcached.end() + await flush(memcached) if (origCommand) { Memcached.prototype.command = origCommand } diff --git a/test/versioned/memcached/newrelic.js b/test/versioned/memcached/newrelic.js new file mode 100644 index 0000000000..0c4ade8d59 --- /dev/null +++ b/test/versioned/memcached/newrelic.js @@ -0,0 +1,21 @@ +/* + * Copyright 2024 New Relic Corporation. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +'use strict' + +exports.config = { + app_name: ['My Application'], + license_key: 'license key here', + utilization: { + detect_aws: false, + detect_pcf: false, + detect_azure: false, + detect_gcp: false, + detect_docker: false + }, + logging: { + enabled: false + } +} diff --git a/test/versioned/memcached/package.json b/test/versioned/memcached/package.json new file mode 100644 index 0000000000..60429c402c --- /dev/null +++ b/test/versioned/memcached/package.json @@ -0,0 +1,19 @@ +{ + "name": "memcached-test", + "targets": [{"name":"memcached","minAgentVersion":"1.26.2"}], + "version": "0.0.0", + "private": true, + "tests": [ + { + "engines": { + "node": ">=16" + }, + "dependencies": { + "memcached": ">=2.2.0" + }, + "files": [ + "memcached.tap.js" + ] + } + ] +}