From 90ae7ac948e61252e5c8db6ce005566064c83789 Mon Sep 17 00:00:00 2001 From: Nikolay Shchegolev Date: Wed, 29 Jan 2025 09:30:26 +0400 Subject: [PATCH 1/5] [CPU] OV CPU plugin fails to infer SegNext model (#28637) ### Details: - ** - ### Tickets: - *158419* --- .../subgraph_tests/src/common/matmul_decompress_convert.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/intel_cpu/tests/functional/custom/subgraph_tests/src/common/matmul_decompress_convert.cpp b/src/plugins/intel_cpu/tests/functional/custom/subgraph_tests/src/common/matmul_decompress_convert.cpp index aa68ca17db7375..a15237e62e973e 100644 --- a/src/plugins/intel_cpu/tests/functional/custom/subgraph_tests/src/common/matmul_decompress_convert.cpp +++ b/src/plugins/intel_cpu/tests/functional/custom/subgraph_tests/src/common/matmul_decompress_convert.cpp @@ -435,7 +435,7 @@ class MatMulDecompressConvertTest2 : public MatMulDecompressConvertTest { if (transpA) transposeCount += 2; if (!transpB) - transposeCount++; + transposeCount += 2; if (transpA) { transpose_shape(inputDynamicShapes[0]); @@ -503,7 +503,7 @@ namespace { const auto testParams2D_FP16_2_smoke = ::testing::Combine(::testing::Values(static_shapes_to_test_representation({{2, 3}, {2, 3}, {3, 4}})), - ::testing::Values(std::pair{false, true}), + ::testing::Values(std::pair{false, true}, std::pair{true, false}), ::testing::Values(ElementType::f16), ::testing::Values(emptyConfig), ::testing::ValuesIn(filter_specific_params(false))); From fefbe56bc0cbd8e277dcff56584d362ef35a2b7e Mon Sep 17 00:00:00 2001 From: Kirill Suvorov Date: Wed, 29 Jan 2025 10:23:44 +0100 Subject: [PATCH 2/5] [JS API] Refactoring test utils (#28663) ### Details: - Utils moved to the `tests` directory for use from all tests folders. - Removed `getModelPath` from utils, model path is now available in `xml` and `bin` property. - Added `inputShape` and `outputShape` to model declaration and use them where needed. - Added `lengthFromShape` function to get required tensor size. --------- Signed-off-by: Kirill Suvorov --- src/bindings/js/.eslintrc-global.js | 1 + src/bindings/js/node/package.json | 2 +- .../js/node/tests/e2e/electron-app.test.js | 2 +- .../js/node/tests/{unit => }/setup.js | 0 src/bindings/js/node/tests/unit/basic.test.js | 30 +++++----- .../js/node/tests/unit/compiled_model.test.js | 13 +++-- src/bindings/js/node/tests/unit/core.test.js | 9 +-- .../js/node/tests/unit/infer_request.test.js | 46 +++++++++++---- src/bindings/js/node/tests/unit/model.test.js | 9 ++- .../tests/unit/pre_post_processor.test.js | 9 ++- .../js/node/tests/unit/read_model.test.js | 21 ++++--- .../js/node/tests/unit/tensor.test.js | 3 +- .../js/node/tests/{unit => }/utils.js | 56 +++++++++++-------- 13 files changed, 121 insertions(+), 80 deletions(-) rename src/bindings/js/node/tests/{unit => }/setup.js (100%) rename src/bindings/js/node/tests/{unit => }/utils.js (70%) diff --git a/src/bindings/js/.eslintrc-global.js b/src/bindings/js/.eslintrc-global.js index 7f4abc54561495..49fac29db5f69f 100644 --- a/src/bindings/js/.eslintrc-global.js +++ b/src/bindings/js/.eslintrc-global.js @@ -23,6 +23,7 @@ module.exports = { 'key-spacing': ['error', { beforeColon: false }], 'no-multiple-empty-lines': ['error', { max: 1, maxBOF: 0, maxEOF: 0 }], 'keyword-spacing': ['error', { overrides: { catch: { after: false } } }], + 'prefer-destructuring': ["error", { "object": true, "array": false }], '@typescript-eslint/no-var-requires': 0, } }; diff --git a/src/bindings/js/node/package.json b/src/bindings/js/node/package.json index 0dab709718ae9b..832d46f031bfa8 100644 --- a/src/bindings/js/node/package.json +++ b/src/bindings/js/node/package.json @@ -18,7 +18,7 @@ "build": "npm run tsc", "prepare": "npm run build", "lint": "eslint .", - "test_setup": "node ./tests/unit/setup.js", + "test_setup": "node ./tests/setup.js", "test": "npm run test_setup && node --test ./tests/unit/*.test.js", "test:e2e": "mocha ./tests/e2e/electron-app.test.js", "tsc": "tsc", diff --git a/src/bindings/js/node/tests/e2e/electron-app.test.js b/src/bindings/js/node/tests/e2e/electron-app.test.js index 98982a5f941263..9cd900d7705a6c 100644 --- a/src/bindings/js/node/tests/e2e/electron-app.test.js +++ b/src/bindings/js/node/tests/e2e/electron-app.test.js @@ -4,7 +4,7 @@ const util = require('node:util'); const assert = require('node:assert'); const { exec } = require('child_process'); const execPromise = util.promisify(exec); -const { testModels, downloadTestModel } = require('../unit/utils.js'); +const { testModels, downloadTestModel } = require('../utils.js'); describe('E2E testing for OpenVINO as an Electron dependency.', function() { this.timeout(50000); diff --git a/src/bindings/js/node/tests/unit/setup.js b/src/bindings/js/node/tests/setup.js similarity index 100% rename from src/bindings/js/node/tests/unit/setup.js rename to src/bindings/js/node/tests/setup.js diff --git a/src/bindings/js/node/tests/unit/basic.test.js b/src/bindings/js/node/tests/unit/basic.test.js index bdafca9260f39b..eb57e29583db45 100644 --- a/src/bindings/js/node/tests/unit/basic.test.js +++ b/src/bindings/js/node/tests/unit/basic.test.js @@ -11,14 +11,14 @@ const { after, describe, it, before, beforeEach } = require('node:test'); const { testModels, compareModels, - getModelPath, isModelAvailable, sleep, -} = require('./utils.js'); + lengthFromShape, +} = require('../utils.js'); const epsilon = 0.5; describe('ov basic tests.', () => { - let testXml = null; + const { testModelFP32 } = testModels; let core = null; let model = null; let compiledModel = null; @@ -27,13 +27,12 @@ describe('ov basic tests.', () => { before(async () => { outDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), 'ov_js_out_')); - await isModelAvailable(testModels.testModelFP32); - testXml = getModelPath().xml; + await isModelAvailable(testModelFP32); }); beforeEach(() => { core = new ov.Core(); - model = core.readModelSync(testXml); + model = core.readModelSync(testModelFP32.xml); compiledModel = core.compileModelSync(model, 'CPU'); modelLike = [model, compiledModel]; }); @@ -139,12 +138,12 @@ describe('ov basic tests.', () => { }); it('compileModelSync(model_path, deviceName, config: {}) ', () => { - const cm = core.compileModelSync(testXml, 'CPU', tput); + const cm = core.compileModelSync(testModelFP32.xml, 'CPU', tput); assert.equal(cm.inputs.length, 1); }); it('compileModelSync(model:model_path, deviceName: string) ', () => { - const cm = core.compileModelSync(testXml, 'CPU'); + const cm = core.compileModelSync(testModelFP32.xml, 'CPU'); assert.deepStrictEqual(cm.output(0).shape, [1, 10]); }); @@ -200,13 +199,13 @@ describe('ov basic tests.', () => { }); it('compileModel(model_path, deviceName, config: {}) ', () => { - core.compileModel(testXml, 'CPU', tput).then((cm) => { + core.compileModel(testModelFP32.xml, 'CPU', tput).then((cm) => { assert.equal(cm.inputs.length, 1); }); }); it('compileModel(model:model_path, deviceName: string) ', () => { - core.compileModel(testXml, 'CPU').then((cm) => { + core.compileModel(testModelFP32.xml, 'CPU').then((cm) => { assert.deepStrictEqual(cm.output(0).shape, [1, 10]); }); }); @@ -277,8 +276,11 @@ describe('ov basic tests.', () => { assert.strictEqual(obj.input().getAnyName(), 'data'); assert.strictEqual(obj.input().anyName, 'data'); - assert.deepStrictEqual(obj.input(0).shape, [1, 3, 32, 32]); - assert.deepStrictEqual(obj.input(0).getShape(), [1, 3, 32, 32]); + assert.deepStrictEqual(obj.input(0).shape, testModelFP32.inputShape); + assert.deepStrictEqual( + obj.input(0).getShape(), + testModelFP32.inputShape, + ); }); }); }); @@ -290,11 +292,11 @@ describe('ov basic tests.', () => { before(() => { tensor = Float32Array.from( - { length: 3072 }, + { length: lengthFromShape(testModelFP32.inputShape) }, () => Math.random() + epsilon, ); const core = new ov.Core(); - const model = core.readModelSync(testXml); + const model = core.readModelSync(testModelFP32.xml); const compiledModel = core.compileModelSync(model, 'CPU'); userStream = compiledModel.exportModelSync(); const inferRequest = compiledModel.createInferRequest(); diff --git a/src/bindings/js/node/tests/unit/compiled_model.test.js b/src/bindings/js/node/tests/unit/compiled_model.test.js index e88752512ec40a..4f41636371893a 100644 --- a/src/bindings/js/node/tests/unit/compiled_model.test.js +++ b/src/bindings/js/node/tests/unit/compiled_model.test.js @@ -5,16 +5,15 @@ const { addon: ov } = require('../..'); const assert = require('assert'); const { describe, it, before, beforeEach } = require('node:test'); -const { testModels, getModelPath, isModelAvailable } = require('./utils.js'); +const { testModels, isModelAvailable } = require('../utils.js'); describe('ov.CompiledModel tests', () => { - let testXml = null; + const { testModelFP32 } = testModels; let core = null; let compiledModel = null; before(async () => { - await isModelAvailable(testModels.testModelFP32); - testXml = getModelPath().xml; + await isModelAvailable(testModelFP32); core = new ov.Core(); }); @@ -22,7 +21,11 @@ describe('ov.CompiledModel tests', () => { const properties = { AUTO_BATCH_TIMEOUT: '1', }; - compiledModel = core.compileModelSync(testXml, 'BATCH:CPU', properties); + compiledModel = core.compileModelSync( + testModelFP32.xml, + 'BATCH:CPU', + properties + ); }); describe('getProperty()', () => { diff --git a/src/bindings/js/node/tests/unit/core.test.js b/src/bindings/js/node/tests/unit/core.test.js index f62adda9f90f9c..02fa13c90f1b94 100644 --- a/src/bindings/js/node/tests/unit/core.test.js +++ b/src/bindings/js/node/tests/unit/core.test.js @@ -5,12 +5,13 @@ const { addon: ov } = require('../..'); const assert = require('assert'); const { describe, it, before, beforeEach } = require('node:test'); -const { testModels, isModelAvailable, getModelPath } = require('./utils.js'); +const { testModels, isModelAvailable } = require('../utils.js'); describe('ov.Core tests', () => { + const { testModelFP32 } = testModels; let core = null; before(async () => { - await isModelAvailable(testModels.testModelFP32); + await isModelAvailable(testModelFP32); }); beforeEach(() => { @@ -95,7 +96,7 @@ describe('ov.Core tests', () => { }); it('Core.queryModel() with incorrect arguments should throw an error', () => { - const model = core.readModelSync(getModelPath().xml); + const model = core.readModelSync(testModelFP32.xml); assert.throws( () => core.queryModel(model, 'arg1', 'arg2').then(), /'queryModel' method called with incorrect parameters./, @@ -103,7 +104,7 @@ describe('ov.Core tests', () => { }); it('Core.queryModel() should have device in the result values', () => { - const model = core.readModelSync(getModelPath().xml); + const model = core.readModelSync(testModelFP32.xml); const device = 'CPU'; const queryModel = core.queryModel(model, device); assert(Object.values(queryModel).includes(device)); diff --git a/src/bindings/js/node/tests/unit/infer_request.test.js b/src/bindings/js/node/tests/unit/infer_request.test.js index 224781d4b80431..b324630d08d6d2 100644 --- a/src/bindings/js/node/tests/unit/infer_request.test.js +++ b/src/bindings/js/node/tests/unit/infer_request.test.js @@ -5,12 +5,16 @@ const { addon: ov } = require('../..'); const assert = require('assert'); const { describe, it, before, beforeEach } = require('node:test'); -const { testModels, isModelAvailable, getModelPath } = require('./utils.js'); +const { + testModels, + isModelAvailable, + lengthFromShape, +} = require('../utils.js'); const epsilon = 0.5; // To avoid very small numbers -const testXml = getModelPath().xml; describe('ov.InferRequest tests', () => { + const { testModelFP32 } = testModels; let compiledModel = null; let tensorData = null; let tensor = null; @@ -18,18 +22,26 @@ describe('ov.InferRequest tests', () => { let tensorLike = null; before(async () => { - await isModelAvailable(testModels.testModelFP32); + await isModelAvailable(testModelFP32); const core = new ov.Core(); - const model = core.readModelSync(testXml); + const model = core.readModelSync(testModelFP32.xml); compiledModel = core.compileModelSync(model, 'CPU'); tensorData = Float32Array.from( - { length: 3072 }, + { length: lengthFromShape(testModelFP32.inputShape) }, () => Math.random() + epsilon, ); - tensor = new ov.Tensor(ov.element.f32, [1, 3, 32, 32], tensorData); - resTensor = new ov.Tensor(ov.element.f32, [1, 10], tensorData.slice(-10)); + tensor = new ov.Tensor( + ov.element.f32, + testModelFP32.inputShape, + tensorData, + ); + resTensor = new ov.Tensor( + ov.element.f32, + testModelFP32.outputShape, + tensorData.slice(-10), + ); tensorLike = [tensor, tensorData]; }); @@ -43,7 +55,10 @@ describe('ov.InferRequest tests', () => { tensorLike.forEach((tl) => { const result = inferRequest.infer({ data: tl }); assert.deepStrictEqual(Object.keys(result), ['fc_out']); - assert.deepStrictEqual(result['fc_out'].data.length, 10); + assert.deepStrictEqual( + result['fc_out'].data.length, + lengthFromShape(testModelFP32.outputShape) + ); }); }); @@ -51,7 +66,10 @@ describe('ov.InferRequest tests', () => { tensorLike.forEach((tl) => { const result = inferRequest.infer([tl]); assert.deepStrictEqual(Object.keys(result), ['fc_out']); - assert.deepStrictEqual(result['fc_out'].data.length, 10); + assert.deepStrictEqual( + result['fc_out'].data.length, + lengthFromShape(testModelFP32.outputShape), + ); }); }); @@ -102,7 +120,10 @@ describe('ov.InferRequest tests', () => { inferRequest.inferAsync({ data: tensor }).then((result) => { assert.ok(result['fc_out'] instanceof ov.Tensor); assert.deepStrictEqual(Object.keys(result), ['fc_out']); - assert.deepStrictEqual(result['fc_out'].data.length, 10); + assert.deepStrictEqual( + result['fc_out'].data.length, + lengthFromShape(testModelFP32.outputShape), + ); }); }); @@ -110,7 +131,10 @@ describe('ov.InferRequest tests', () => { inferRequest.inferAsync([tensor]).then((result) => { assert.ok(result['fc_out'] instanceof ov.Tensor); assert.deepStrictEqual(Object.keys(result), ['fc_out']); - assert.deepStrictEqual(result['fc_out'].data.length, 10); + assert.deepStrictEqual( + result['fc_out'].data.length, + lengthFromShape(testModelFP32.outputShape), + ); }); }); diff --git a/src/bindings/js/node/tests/unit/model.test.js b/src/bindings/js/node/tests/unit/model.test.js index f4bf6bc78ccd6e..ff34141a15154f 100644 --- a/src/bindings/js/node/tests/unit/model.test.js +++ b/src/bindings/js/node/tests/unit/model.test.js @@ -5,21 +5,20 @@ const { addon: ov } = require('../..'); const assert = require('assert'); const { describe, it, before, beforeEach } = require('node:test'); -const { testModels, getModelPath, isModelAvailable } = require('./utils.js'); +const { testModels, isModelAvailable } = require('../utils.js'); describe('ov.Model tests', () => { - let testXml = null; + const { testModelFP32 } = testModels; let core = null; let model = null; before(async () => { - await isModelAvailable(testModels.testModelFP32); - testXml = getModelPath().xml; + await isModelAvailable(testModelFP32); core = new ov.Core(); }); beforeEach(() => { - model = core.readModelSync(testXml); + model = core.readModelSync(testModelFP32.xml); }); describe('Model.isDynamic()', () => { diff --git a/src/bindings/js/node/tests/unit/pre_post_processor.test.js b/src/bindings/js/node/tests/unit/pre_post_processor.test.js index c808d62f02887f..47781567dae130 100644 --- a/src/bindings/js/node/tests/unit/pre_post_processor.test.js +++ b/src/bindings/js/node/tests/unit/pre_post_processor.test.js @@ -5,21 +5,20 @@ const { addon: ov } = require('../..'); const assert = require('assert'); const { describe, it, before, beforeEach } = require('node:test'); -const { testModels, getModelPath, isModelAvailable } = require('./utils.js'); +const { testModels, isModelAvailable } = require('../utils.js'); describe('ov.preprocess.PrePostProcessor tests', () => { - let testXml = null; + const { testModelFP32 } = testModels; let core = null; let model = null; before(async () => { - await isModelAvailable(testModels.testModelFP32); - testXml = getModelPath().xml; + await isModelAvailable(testModelFP32); core = new ov.Core(); }); beforeEach(() => { - model = core.readModelSync(testXml); + model = core.readModelSync(testModelFP32.xml); }); describe('PrePostProcess', () => { diff --git a/src/bindings/js/node/tests/unit/read_model.test.js b/src/bindings/js/node/tests/unit/read_model.test.js index 46817c0c86152b..dbfa70566dab1e 100644 --- a/src/bindings/js/node/tests/unit/read_model.test.js +++ b/src/bindings/js/node/tests/unit/read_model.test.js @@ -6,11 +6,10 @@ const fs = require('node:fs'); const { addon: ov } = require('../..'); const assert = require('assert'); const { describe, it, before, beforeEach } = require('node:test'); -const { testModels, isModelAvailable, getModelPath } = require('./utils.js'); - -const { xml: modelPath, bin: weightsPath } = getModelPath(); +const { testModels, isModelAvailable } = require('../utils.js'); describe('Tests for reading model.', () => { + const { testModelFP32 } = testModels; let modelFile = null; let modelStr = null; let weightsFile = null; @@ -18,10 +17,10 @@ describe('Tests for reading model.', () => { let core = null; before(async () => { - await isModelAvailable(testModels.testModelFP32); - modelFile = fs.readFileSync(modelPath); - modelStr = fs.readFileSync(modelPath, 'utf8'); - weightsFile = fs.readFileSync(weightsPath); + await isModelAvailable(testModelFP32); + modelFile = fs.readFileSync(testModelFP32.xml); + modelStr = fs.readFileSync(testModelFP32.xml, 'utf8'); + weightsFile = fs.readFileSync(testModelFP32.bin); }); beforeEach(() => { @@ -35,13 +34,13 @@ describe('Tests for reading model.', () => { describe('Core.readModeSync', () => { it('readModeSync(xmlPath) ', () => { - const model = core.readModelSync(modelPath); + const model = core.readModelSync(testModelFP32.xml); assert.ok(model instanceof ov.Model); assert.equal(model.inputs.length, 1); }); it('readModeSync(xmlPath, weightsPath) ', () => { - const model = core.readModelSync(modelPath, weightsPath); + const model = core.readModelSync(testModelFP32.xml, testModelFP32.bin); assert.ok(model instanceof ov.Model); assert.equal(model.inputs.length, 1); }); @@ -71,12 +70,12 @@ describe('Tests for reading model.', () => { describe('Core.readModel', () => { it('readModel(xmlPath) ', async () => { - const model = await core.readModel(modelPath); + const model = await core.readModel(testModelFP32.xml); assert.equal(model.inputs.length, 1); }); it('readModel(xmlPath, weightsPath) ', async () => { - const model = await core.readModel(modelPath, weightsPath); + const model = await core.readModel(testModelFP32.xml, testModelFP32.bin); assert.equal(model.inputs.length, 1); }); diff --git a/src/bindings/js/node/tests/unit/tensor.test.js b/src/bindings/js/node/tests/unit/tensor.test.js index bdd5d0c4821431..12d2e93733a43d 100644 --- a/src/bindings/js/node/tests/unit/tensor.test.js +++ b/src/bindings/js/node/tests/unit/tensor.test.js @@ -6,6 +6,7 @@ const { addon: ov } = require('../..'); const assert = require('assert'); const { test, describe, it, before } = require('node:test'); const getRandomBigInt = require('random-bigint'); +const { lengthFromShape } = require('../utils'); describe('ov.Tensor tests', () => { let shape = null; @@ -260,7 +261,7 @@ describe('ov.Tensor tests', () => { describe('Tensor getSize', () => { it('getSize returns the correct total number of elements', () => { const tensor = new ov.Tensor(ov.element.f32, shape, data); - const expectedSize = shape.reduce((acc, dim) => acc * dim, 1); + const expectedSize = lengthFromShape(shape); assert.strictEqual(tensor.getSize(), expectedSize); }); diff --git a/src/bindings/js/node/tests/unit/utils.js b/src/bindings/js/node/tests/utils.js similarity index 70% rename from src/bindings/js/node/tests/unit/utils.js rename to src/bindings/js/node/tests/utils.js index 232e4939f421c9..88f48066d1abf2 100644 --- a/src/bindings/js/node/tests/unit/utils.js +++ b/src/bindings/js/node/tests/utils.js @@ -7,13 +7,20 @@ const fs = require('node:fs/promises'); const { downloadFile, checkIfPathExists, -} = require('../../scripts/lib/utils'); +} = require('../scripts/lib/utils'); const modelDir = 'tests/unit/test_models/'; + +function getModelPath(fileName) { + return path.join(modelDir, fileName); +} + const testModels = { testModelFP32: { - xml: 'test_model_fp32.xml', - bin: 'test_model_fp32.bin', + xml: getModelPath('test_model_fp32.xml'), + bin: getModelPath('test_model_fp32.bin'), + inputShape: [1, 3, 32, 32], + outputShape: [1, 10], xmlURL: 'https://raw.githubusercontent.com/openvinotoolkit/testdata/master/models/test_model/test_model_fp32.xml', binURL: @@ -24,10 +31,10 @@ const testModels = { module.exports = { compareModels, sleep, - getModelPath, downloadTestModel, isModelAvailable, testModels, + lengthFromShape, }; function compareModels(model1, model2) { @@ -59,32 +66,39 @@ function sleep(ms) { return new Promise((resolve) => setTimeout(resolve, ms)); } -function getModelPath(isFP16 = false) { - const modelName = `test_model_fp${isFP16 ? 16 : 32}`; - - return { - xml: path.join(modelDir, `${modelName}.xml`), - bin: path.join(modelDir, `${modelName}.bin`), - }; +function lengthFromShape(shape) { + return shape.reduce( + (accumulator, currentValue) => accumulator * currentValue, + 1 + ); } async function downloadTestModel(model) { - const modelsDir = './tests/unit/test_models'; try { - const ifModelsDirectoryExists = await checkIfPathExists(modelsDir); + const ifModelsDirectoryExists = await checkIfPathExists(modelDir); if (!ifModelsDirectoryExists) { await fs.mkdir(modelDir); } - const modelPath = path.join(modelsDir, model.xml); - const modelExists = await checkIfPathExists(modelPath); - if (modelExists) return; - const { env } = process; const proxyUrl = env.http_proxy || env.HTTP_PROXY || env.npm_config_proxy; - await downloadFile(model.xmlURL, modelsDir, model.xml, proxyUrl); - await downloadFile(model.binURL, modelsDir, model.bin, proxyUrl); + const modelExists = await checkIfPathExists(model.xml); + if (!modelExists) await downloadFile( + model.xmlURL, + path.dirname(model.xml), + path.basename(model.xml), + proxyUrl, + ); + + const weightsExists = await checkIfPathExists(model.bin); + if (!weightsExists) await downloadFile( + model.binURL, + path.dirname(model.bin), + path.basename(model.bin), + proxyUrl, + ); + } catch(error) { console.error(`Failed to download the model: ${error}.`); throw error; @@ -92,9 +106,7 @@ async function downloadTestModel(model) { } async function isModelAvailable(model) { - const baseArtifactsDir = './tests/unit/test_models'; - const modelPath = path.join(baseArtifactsDir, model.xml); - const modelExists = await checkIfPathExists(modelPath); + const modelExists = await checkIfPathExists(model.xml); if (modelExists) return; console.log( From 259e25ae2b62fb91a7c4481ebcaddecae1366b79 Mon Sep 17 00:00:00 2001 From: Andrei Kashchikhin Date: Wed, 29 Jan 2025 09:46:04 +0000 Subject: [PATCH 3/5] [CI] [GHA] Add runner-related errors to rerunner (#28690) ### Tickets: - *160816* - *160818* --- .github/scripts/workflow_rerun/errors_to_look_for.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/scripts/workflow_rerun/errors_to_look_for.json b/.github/scripts/workflow_rerun/errors_to_look_for.json index 55b46f9df1b1bb..0a189f80b8b198 100644 --- a/.github/scripts/workflow_rerun/errors_to_look_for.json +++ b/.github/scripts/workflow_rerun/errors_to_look_for.json @@ -118,5 +118,13 @@ { "error_text": "file DOWNLOAD cannot compute hash on failed download", "ticket": 156593 + }, + { + "error_text": "lost communication with the server", + "ticket": 160816 + }, + { + "error_text": "the runner has received a shutdown signal", + "ticket": 160818 } ] \ No newline at end of file From bb21b653c11bb3559ae9cb59552d5bbeeddab0f2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Jan 2025 15:12:38 +0400 Subject: [PATCH 4/5] Bump actions/upload-artifact from 4.4.3 to 4.6.0 (#28710) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.3 to 4.6.0.
Release notes

Sourced from actions/upload-artifact's releases.

v4.6.0

What's Changed

Full Changelog: https://github.com/actions/upload-artifact/compare/v4...v4.6.0

v4.5.0

What's Changed

New Contributors

Full Changelog: https://github.com/actions/upload-artifact/compare/v4.4.3...v4.5.0

Commits
  • 65c4c4a Merge pull request #662 from actions/yacaovsnc/add_variable_for_concurrency_a...
  • 0207619 move files back to satisfy licensed ci
  • 1ecca81 licensed cache updates
  • 9742269 Expose env vars to controll concurrency and timeout
  • 6f51ac0 Merge pull request #656 from bdehamer/bdehamer/artifact-digest
  • c40c16d add new artifact-digest output
  • 735efb4 bump @​actions/artifact from 2.1.11 to 2.2.0
  • 184d73b Merge pull request #578 from hamirmahal/fix/deprecated-nodejs-usage-in-action
  • b4a0a98 Merge branch 'main' into fix/deprecated-nodejs-usage-in-action
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/upload-artifact&package-manager=github_actions&previous-version=4.4.3&new-version=4.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build_doc.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_doc.yml b/.github/workflows/build_doc.yml index b0739432f29066..b739d6e7905417 100644 --- a/.github/workflows/build_doc.yml +++ b/.github/workflows/build_doc.yml @@ -78,13 +78,13 @@ jobs: echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_ENV - name: 'Upload sphinx.log' - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: name: sphinx_build_log_${{ env.PR_NUMBER }}.log path: build/docs/sphinx.log - name: 'Upload docs html' - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: name: openvino_docs_html_${{ env.PR_NUMBER }}.zip path: build/docs/openvino_docs_html.zip @@ -101,7 +101,7 @@ jobs: - name: 'Upload test results' if: failure() - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: name: openvino_docs_pytest path: build/docs/_artifacts/ From b22b5269a8f107cf86bb2c092aa3f33edf4143e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Jan 2025 15:12:48 +0400 Subject: [PATCH 5/5] Bump actions/stale from 9.0.0 to 9.1.0 (#28709) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/stale](https://github.com/actions/stale) from 9.0.0 to 9.1.0.
Release notes

Sourced from actions/stale's releases.

v9.1.0

What's Changed

New Contributors

Full Changelog: https://github.com/actions/stale/compare/v9...v9.1.0

Commits
  • 5bef64f build(deps): bump @​actions/cache from 3.2.2 to 4.0.0 (#1194)
  • fa77dfd build(deps-dev): bump @​types/jest from 29.5.11 to 29.5.14 (#1193)
  • f04443d build(deps): bump @​actions/core from 1.10.1 to 1.11.1 (#1191)
  • 5c715b0 build(deps-dev): bump ts-jest from 29.1.1 to 29.2.5 (#1175)
  • f691222 build(deps): bump actions/publish-action from 0.2.2 to 0.3.0 (#1147)
  • df990c2 build(deps): bump actions/checkout from 3 to 4 (#1091)
  • 6e472ce Merge pull request #1179 from actions/Jcambass-patch-1
  • d10ba64 Merge pull request #1150 from actions/dependabot/npm_and_yarn/undici-5.28.4
  • bbf3da5 resolve check failures
  • 6a2e61d Add workflow file for publishing releases to immutable action package
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/stale&package-manager=github_actions&previous-version=9.0.0&new-version=9.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/stale_prs_and_issues.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale_prs_and_issues.yml b/.github/workflows/stale_prs_and_issues.yml index d246a7e83f4f73..78da322ae15b4e 100644 --- a/.github/workflows/stale_prs_and_issues.yml +++ b/.github/workflows/stale_prs_and_issues.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest if: ${{ github.repository_owner == 'openvinotoolkit' }} steps: - - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0 + - uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0 with: stale-issue-message: 'This issue will be closed in a week because of 9 months of no activity.' stale-pr-message: 'This PR will be closed in a week because of 2 weeks of no activity.'