mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2026-06-20 09:19:27 +02:00
Main build (Jenkins)
This commit is contained in:
+2
-1
@@ -139,7 +139,8 @@
|
||||
"ClickHouse": true,
|
||||
"RSS": true,
|
||||
"HTTP": true,
|
||||
"Core": true
|
||||
"Core": true,
|
||||
"WebSocket": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
66C0E1541DEF92AD15A4861C5D49CD77457292F4348396608CA790C480727349
|
||||
C9C6784E6F6A8D8A56E9C9F5673721469DD3310F2A6E16E8833BBDF2514DC63B
|
||||
@@ -582,6 +582,23 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['WebSocket', './service/yaxunit_conf/en/WebSocket.json'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-GreenAPI') {
|
||||
when {
|
||||
expression { return shouldRunStage('GreenAPI') }
|
||||
|
||||
@@ -582,6 +582,23 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['WebSocket', './service/yaxunit_conf/ru/WebSocket.json'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-GreenAPI') {
|
||||
when {
|
||||
expression { return shouldRunStage('GreenAPI') }
|
||||
|
||||
@@ -667,6 +667,23 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPItc_WebSocket.os', 'WS_Client'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-GreenAPI') {
|
||||
when {
|
||||
expression { return shouldRunStage('GreenAPI') }
|
||||
|
||||
@@ -667,6 +667,23 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPItc_WebSocket.os', 'WS_Клиент'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-GreenAPI') {
|
||||
when {
|
||||
expression { return shouldRunStage('GreenAPI') }
|
||||
|
||||
@@ -667,6 +667,23 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPItc_WebSocket.os', 'WS_Client'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-GreenAPI') {
|
||||
when {
|
||||
expression { return shouldRunStage('GreenAPI') }
|
||||
|
||||
@@ -667,6 +667,23 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPItc_WebSocket.os', 'WS_Клиент'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-GreenAPI') {
|
||||
when {
|
||||
expression { return shouldRunStage('GreenAPI') }
|
||||
|
||||
@@ -747,6 +747,23 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPItc_WebSocket.os', 'WS_Client'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-GreenAPI') {
|
||||
when {
|
||||
expression { return shouldRunStage('GreenAPI') }
|
||||
|
||||
@@ -747,6 +747,23 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPItc_WebSocket.os', 'WS_Клиент'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-GreenAPI') {
|
||||
when {
|
||||
expression { return shouldRunStage('GreenAPI') }
|
||||
|
||||
@@ -677,6 +677,23 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPIt_WebSocket.os', 'WS_Client'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-GreenAPI') {
|
||||
when {
|
||||
expression { return shouldRunStage('GreenAPI') }
|
||||
|
||||
@@ -677,6 +677,23 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPIt_WebSocket.os', 'WS_Клиент'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-GreenAPI') {
|
||||
when {
|
||||
expression { return shouldRunStage('GreenAPI') }
|
||||
|
||||
@@ -677,6 +677,23 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPIt_WebSocket.os', 'WS_Client'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-GreenAPI') {
|
||||
when {
|
||||
expression { return shouldRunStage('GreenAPI') }
|
||||
|
||||
@@ -677,6 +677,23 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPIt_WebSocket.os', 'WS_Клиент'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-GreenAPI') {
|
||||
when {
|
||||
expression { return shouldRunStage('GreenAPI') }
|
||||
|
||||
@@ -674,6 +674,23 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPIt_WebSocket.os', 'WS_Client'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-GreenAPI') {
|
||||
when {
|
||||
expression { return shouldRunStage('GreenAPI') }
|
||||
|
||||
@@ -674,6 +674,23 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPIt_WebSocket.os', 'WS_Клиент'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-GreenAPI') {
|
||||
when {
|
||||
expression { return shouldRunStage('GreenAPI') }
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
def runCommand(String command) {
|
||||
if (isUnix()) {
|
||||
sh(script: command)
|
||||
} else {
|
||||
bat(script: command)
|
||||
}
|
||||
}
|
||||
|
||||
def runLibraryTest(String libraryName, String configPath) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
script {
|
||||
runCommand("\"C:/Program Files (x86)/1cv8/8.3.26.1656/bin/1cv8c.exe\" /IBConnectionString \"Srvr=\"\"DEVSRV\"\";Ref=\"\"OpenIntegrationsEng\"\";\" /C\"RunUnitTests=${configPath}\"")
|
||||
|
||||
timeout(time: 60, unit: 'MINUTES') {
|
||||
waitUntil {
|
||||
fileExists "./test_results/${libraryName}.code"
|
||||
}
|
||||
}
|
||||
|
||||
if (fileExists("./test_results/${libraryName}.report")) {
|
||||
def reportContent = readFile("./test_results/${libraryName}.report")
|
||||
echo "=== ${libraryName} report content ==="
|
||||
echo reportContent
|
||||
echo "=========================="
|
||||
} else {
|
||||
echo "WARNING: ${libraryName}.report file not found"
|
||||
}
|
||||
|
||||
def exitCode = readFile("./test_results/${libraryName}.code").trim().replaceAll("[^0-9]", "")
|
||||
echo "Exit code for ${libraryName}: ${exitCode}"
|
||||
if (exitCode != "0") {
|
||||
error "Tests ${libraryName} failed with exit code: ${exitCode}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def shouldRunStage(stageName) {
|
||||
try {
|
||||
if (!env.STAGES_CONFIG) {
|
||||
echo "[WARN] STAGES_CONFIG not set. Assuming stage '${stageName}' is ENABLED."
|
||||
return true
|
||||
}
|
||||
def config = readJSON text: env.STAGES_CONFIG
|
||||
def value = config[stageName]
|
||||
if (value == null) {
|
||||
echo "[WARN] Stage '${stageName}' not found in config. Defaulting to DISABLED."
|
||||
return false
|
||||
}
|
||||
return value == true
|
||||
} catch (Exception e) {
|
||||
echo "[ERROR] Failed to parse STAGES_CONFIG: ${e.message}"
|
||||
echo "Raw config: ${env.STAGES_CONFIG}"
|
||||
// Решите: включать stage по умолчанию или нет?
|
||||
return false // или true — по вашему усмотрению
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label 'windows'
|
||||
}
|
||||
stages {
|
||||
|
||||
stage('Prepare Test Results Directory') {
|
||||
steps {
|
||||
script {
|
||||
runCommand '''
|
||||
if exist ".\\test_results" (
|
||||
rmdir /s /q ".\\test_results"
|
||||
)
|
||||
mkdir ".\\test_results"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Create ReportPortal launch'){
|
||||
steps{
|
||||
bat encoding: 'UTF-8', script:'chcp 65001 & oscript ./ci/os/internal/Classes/ReportPortalMethods.os start "1C:Enterprise"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Read stages config') {
|
||||
steps {
|
||||
script {
|
||||
def configText = readFile './service/tests_config.json'
|
||||
env.STAGES_CONFIG = configText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-Core') {
|
||||
when {
|
||||
expression { return shouldRunStage('Core') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['Core', './service/yaxunit_conf/en/Core.json'],
|
||||
]
|
||||
for (test in tests) {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['WebSocket', './service/yaxunit_conf/en/WebSocket.json'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
post{
|
||||
always{
|
||||
script {
|
||||
catchError() {
|
||||
runCommand('oscript ./ci/os/internal/Classes/ReportPortalMethods.os stop')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
def runCommand(String command) {
|
||||
if (isUnix()) {
|
||||
sh(script: command)
|
||||
} else {
|
||||
bat(script: command)
|
||||
}
|
||||
}
|
||||
|
||||
def runLibraryTest(String libraryName, String configPath) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
script {
|
||||
runCommand("\"C:/Program Files (x86)/1cv8/8.3.26.1656/bin/1cv8c.exe\" /IBConnectionString \"Srvr=\"\"DEVSRV\"\";Ref=\"\"OpenIntegrations\"\";\" /C\"RunUnitTests=${configPath}\"")
|
||||
|
||||
timeout(time: 60, unit: 'MINUTES') {
|
||||
waitUntil {
|
||||
fileExists "./test_results/${libraryName}.code"
|
||||
}
|
||||
}
|
||||
|
||||
if (fileExists("./test_results/${libraryName}.report")) {
|
||||
def reportContent = readFile("./test_results/${libraryName}.report")
|
||||
echo "=== ${libraryName} report content ==="
|
||||
echo reportContent
|
||||
echo "=========================="
|
||||
} else {
|
||||
echo "WARNING: ${libraryName}.report file not found"
|
||||
}
|
||||
|
||||
def exitCode = readFile("./test_results/${libraryName}.code").trim().replaceAll("[^0-9]", "")
|
||||
echo "Exit code for ${libraryName}: ${exitCode}"
|
||||
if (exitCode != "0") {
|
||||
error "Tests ${libraryName} failed with exit code: ${exitCode}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def shouldRunStage(stageName) {
|
||||
try {
|
||||
if (!env.STAGES_CONFIG) {
|
||||
echo "[WARN] STAGES_CONFIG not set. Assuming stage '${stageName}' is ENABLED."
|
||||
return true
|
||||
}
|
||||
def config = readJSON text: env.STAGES_CONFIG
|
||||
def value = config[stageName]
|
||||
if (value == null) {
|
||||
echo "[WARN] Stage '${stageName}' not found in config. Defaulting to DISABLED."
|
||||
return false
|
||||
}
|
||||
return value == true
|
||||
} catch (Exception e) {
|
||||
echo "[ERROR] Failed to parse STAGES_CONFIG: ${e.message}"
|
||||
echo "Raw config: ${env.STAGES_CONFIG}"
|
||||
// Решите: включать stage по умолчанию или нет?
|
||||
return false // или true — по вашему усмотрению
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label 'windows'
|
||||
}
|
||||
stages {
|
||||
|
||||
stage('Prepare Test Results Directory') {
|
||||
steps {
|
||||
script {
|
||||
runCommand '''
|
||||
if exist ".\\test_results" (
|
||||
rmdir /s /q ".\\test_results"
|
||||
)
|
||||
mkdir ".\\test_results"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Create ReportPortal launch'){
|
||||
steps{
|
||||
bat encoding: 'UTF-8', script:'chcp 65001 & oscript ./ci/os/internal/Classes/ReportPortalMethods.os start "1C:Enterprise"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Read stages config') {
|
||||
steps {
|
||||
script {
|
||||
def configText = readFile './service/tests_config.json'
|
||||
env.STAGES_CONFIG = configText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-Core') {
|
||||
when {
|
||||
expression { return shouldRunStage('Core') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['Core', './service/yaxunit_conf/ru/Core.json'],
|
||||
]
|
||||
for (test in tests) {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['WebSocket', './service/yaxunit_conf/ru/WebSocket.json'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
post{
|
||||
always{
|
||||
script {
|
||||
catchError() {
|
||||
runCommand('oscript ./ci/os/internal/Classes/ReportPortalMethods.os stop')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,149 @@
|
||||
def runCommand(String command) {
|
||||
if (isUnix()) {
|
||||
sh(script: command)
|
||||
} else {
|
||||
bat(script: command)
|
||||
}
|
||||
}
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label 'Deb-Agent' // Имя или метка агента
|
||||
}
|
||||
|
||||
stages {
|
||||
|
||||
stage('Read stages config') {
|
||||
steps {
|
||||
script {
|
||||
def configText = readFile './service/tests_config.json'
|
||||
env.STAGES_CONFIG = configText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Remove oint') {
|
||||
steps {
|
||||
script {
|
||||
// Удаляем oint, если он установлен
|
||||
sh 'dpkg -r oint || echo "oint not installed"'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Download oint package') {
|
||||
steps {
|
||||
script {
|
||||
// Скачиваем новый deb-пакет oint
|
||||
sh 'wget -O oint_2.0.0_all_en.deb https://jenkins.openintegrations.dev/job/OpiBuild/job/OpiRelease/lastSuccessfulBuild/artifact/2.0.0/oint_2.0.0_all_en.deb '
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Install oint package') {
|
||||
steps {
|
||||
script {
|
||||
sh 'dpkg -i oint_2.0.0_all_en.deb'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Prepare'){
|
||||
steps{
|
||||
sh 'cd ./src/en/OInt && opm build && opm install oint-2.0.0.ospx && rm oint-2.0.0.ospx'
|
||||
withCredentials([string(credentialsId: 'gpgkey', variable: 'GPGKEY')]) {
|
||||
sh 'gpg --quiet --batch --yes --decrypt --passphrase="$GPGKEY" --output ./data.json ./data.json.gpg'
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Create ReportPortal launch'){
|
||||
steps{
|
||||
sh 'oscript ./ci/os/internal/Classes/ReportPortalMethods.os start "CLI"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-Core') {
|
||||
when {
|
||||
expression { return shouldRunStage('Core') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPItc_Core.os', 'CheckIBToLastBuildCompliance'],
|
||||
['./src/en/OInt/tests/Modules/OPItc_Core.os', 'ValidateAdvancedCall'],
|
||||
]
|
||||
for (test in tests) {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPItc_WebSocket.os', 'WS_Client'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
post{
|
||||
always{
|
||||
script {
|
||||
catchError() {
|
||||
runCommand('oscript ./ci/os/internal/Classes/ReportPortalMethods.os stop')
|
||||
}
|
||||
withCredentials([gitUsernamePassword(credentialsId: 'gitmain', gitToolName: 'Default')]) {
|
||||
sh "git config user.email vitaly.the.alpaca@gmail.com"
|
||||
sh 'git config user.name "Vitaly the Alpaca (bot)"'
|
||||
sh "git config --global core.ignorecase true"
|
||||
sh "git add ."
|
||||
sh 'git commit -m "Test data update (Jenkins)"'
|
||||
sh "git push origin HEAD:main"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def shouldRunStage(stageName) {
|
||||
try {
|
||||
if (!env.STAGES_CONFIG) {
|
||||
echo "[WARN] STAGES_CONFIG not set. Assuming stage '${stageName}' is ENABLED."
|
||||
return true
|
||||
}
|
||||
def config = readJSON text: env.STAGES_CONFIG
|
||||
def value = config[stageName]
|
||||
if (value == null) {
|
||||
echo "[WARN] Stage '${stageName}' not found in config. Defaulting to DISABLED."
|
||||
return false
|
||||
}
|
||||
return value == true
|
||||
} catch (Exception e) {
|
||||
echo "[ERROR] Failed to parse STAGES_CONFIG: ${e.message}"
|
||||
echo "Raw config: ${env.STAGES_CONFIG}"
|
||||
// Решите: включать stage по умолчанию или нет?
|
||||
return false // или true — по вашему усмотрению
|
||||
}
|
||||
}
|
||||
|
||||
def runLibraryTest(String configPath, String libraryName) {
|
||||
try {
|
||||
echo "Executing: 1testrunner -run \"${configPath}\" \"${libraryName}\""
|
||||
runCommand("1testrunner -run \"${configPath}\" \"${libraryName}\"")
|
||||
echo "Test ${libraryName} completed successfully"
|
||||
} catch (Exception e) {
|
||||
echo "ERROR in test ${libraryName}: ${e.getMessage()}"
|
||||
throw e
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,149 @@
|
||||
def runCommand(String command) {
|
||||
if (isUnix()) {
|
||||
sh(script: command)
|
||||
} else {
|
||||
bat(script: command)
|
||||
}
|
||||
}
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label 'Deb-Agent' // Имя или метка агента
|
||||
}
|
||||
|
||||
stages {
|
||||
|
||||
stage('Read stages config') {
|
||||
steps {
|
||||
script {
|
||||
def configText = readFile './service/tests_config.json'
|
||||
env.STAGES_CONFIG = configText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Remove oint') {
|
||||
steps {
|
||||
script {
|
||||
// Удаляем oint, если он установлен
|
||||
sh 'dpkg -r oint || echo "oint not installed"'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Download oint package') {
|
||||
steps {
|
||||
script {
|
||||
// Скачиваем новый deb-пакет oint
|
||||
sh 'wget -O oint_2.0.0_all_ru.deb https://jenkins.openintegrations.dev/job/OpiBuild/job/OpiRelease/lastSuccessfulBuild/artifact/2.0.0/oint_2.0.0_all_ru.deb '
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Install oint package') {
|
||||
steps {
|
||||
script {
|
||||
sh 'dpkg -i oint_2.0.0_all_ru.deb'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Prepare'){
|
||||
steps{
|
||||
sh 'cd ./src/ru/OInt && opm build && opm install oint-2.0.0.ospx && rm oint-2.0.0.ospx'
|
||||
withCredentials([string(credentialsId: 'gpgkey', variable: 'GPGKEY')]) {
|
||||
sh 'gpg --quiet --batch --yes --decrypt --passphrase="$GPGKEY" --output ./data.json ./data.json.gpg'
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Create ReportPortal launch'){
|
||||
steps{
|
||||
sh 'oscript ./ci/os/internal/Classes/ReportPortalMethods.os start "CLI"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-Core') {
|
||||
when {
|
||||
expression { return shouldRunStage('Core') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPItc_Core.os', 'ПроверитьСоответствиеИБПоследнейСборке'],
|
||||
['./src/ru/OInt/tests/Modules/OPItc_Core.os', 'ПроверитьРасширенныйВызов'],
|
||||
]
|
||||
for (test in tests) {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPItc_WebSocket.os', 'WS_Клиент'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
post{
|
||||
always{
|
||||
script {
|
||||
catchError() {
|
||||
runCommand('oscript ./ci/os/internal/Classes/ReportPortalMethods.os stop')
|
||||
}
|
||||
withCredentials([gitUsernamePassword(credentialsId: 'gitmain', gitToolName: 'Default')]) {
|
||||
sh "git config user.email vitaly.the.alpaca@gmail.com"
|
||||
sh 'git config user.name "Vitaly the Alpaca (bot)"'
|
||||
sh "git config --global core.ignorecase true"
|
||||
sh "git add ."
|
||||
sh 'git commit -m "Test data update (Jenkins)"'
|
||||
sh "git push origin HEAD:main"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def shouldRunStage(stageName) {
|
||||
try {
|
||||
if (!env.STAGES_CONFIG) {
|
||||
echo "[WARN] STAGES_CONFIG not set. Assuming stage '${stageName}' is ENABLED."
|
||||
return true
|
||||
}
|
||||
def config = readJSON text: env.STAGES_CONFIG
|
||||
def value = config[stageName]
|
||||
if (value == null) {
|
||||
echo "[WARN] Stage '${stageName}' not found in config. Defaulting to DISABLED."
|
||||
return false
|
||||
}
|
||||
return value == true
|
||||
} catch (Exception e) {
|
||||
echo "[ERROR] Failed to parse STAGES_CONFIG: ${e.message}"
|
||||
echo "Raw config: ${env.STAGES_CONFIG}"
|
||||
// Решите: включать stage по умолчанию или нет?
|
||||
return false // или true — по вашему усмотрению
|
||||
}
|
||||
}
|
||||
|
||||
def runLibraryTest(String configPath, String libraryName) {
|
||||
try {
|
||||
echo "Executing: 1testrunner -run \"${configPath}\" \"${libraryName}\""
|
||||
runCommand("1testrunner -run \"${configPath}\" \"${libraryName}\"")
|
||||
echo "Test ${libraryName} completed successfully"
|
||||
} catch (Exception e) {
|
||||
echo "ERROR in test ${libraryName}: ${e.getMessage()}"
|
||||
throw e
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,149 @@
|
||||
def runCommand(String command) {
|
||||
if (isUnix()) {
|
||||
sh(script: command)
|
||||
} else {
|
||||
bat(script: command)
|
||||
}
|
||||
}
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label 'Rpm-Agent' // Имя или метка агента
|
||||
}
|
||||
stages {
|
||||
|
||||
stage('Read stages config') {
|
||||
steps {
|
||||
script {
|
||||
def configText = readFile './service/tests_config.json'
|
||||
env.STAGES_CONFIG = configText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Remove oint') {
|
||||
steps {
|
||||
script {
|
||||
// Удаляем oint, если он установлен
|
||||
sh 'rpm -e oint || echo "oint not installed"'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Download oint package') {
|
||||
steps {
|
||||
script {
|
||||
// Скачиваем новый rpm-пакет oint
|
||||
sh 'wget -O oint-2.0.0-1.noarch_en.rpm https://jenkins.openintegrations.dev/job/OpiBuild/job/OpiRelease/lastSuccessfulBuild/artifact/2.0.0/oint-2.0.0-1.noarch_en.rpm '
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Install oint package') {
|
||||
steps {
|
||||
script {
|
||||
// Устанавливаем скаченный пакет
|
||||
sh 'rpm -ivh --replacepkgs oint-2.0.0-1.noarch_en.rpm'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Prepare'){
|
||||
steps{
|
||||
sh 'cd ./src/en/OInt && opm build && opm install oint-2.0.0.ospx && rm oint-2.0.0.ospx'
|
||||
withCredentials([string(credentialsId: 'gpgkey', variable: 'GPGKEY')]) {
|
||||
sh 'gpg --quiet --batch --yes --decrypt --passphrase="$GPGKEY" --output ./data.json ./data.json.gpg'
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Create ReportPortal launch'){
|
||||
steps{
|
||||
sh 'oscript ./ci/os/internal/Classes/ReportPortalMethods.os start "CLI"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-Core') {
|
||||
when {
|
||||
expression { return shouldRunStage('Core') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPItc_Core.os', 'CheckIBToLastBuildCompliance'],
|
||||
['./src/en/OInt/tests/Modules/OPItc_Core.os', 'ValidateAdvancedCall'],
|
||||
]
|
||||
for (test in tests) {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPItc_WebSocket.os', 'WS_Client'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
post{
|
||||
always{
|
||||
script {
|
||||
catchError() {
|
||||
runCommand('oscript ./ci/os/internal/Classes/ReportPortalMethods.os stop')
|
||||
}
|
||||
withCredentials([gitUsernamePassword(credentialsId: 'gitmain', gitToolName: 'Default')]) {
|
||||
sh "git config user.email vitaly.the.alpaca@gmail.com"
|
||||
sh 'git config user.name "Vitaly the Alpaca (bot)"'
|
||||
sh "git config --global core.ignorecase true"
|
||||
sh "git add ."
|
||||
sh 'git commit -m "Test data update (Jenkins)"'
|
||||
sh "git push origin HEAD:main"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def shouldRunStage(stageName) {
|
||||
try {
|
||||
if (!env.STAGES_CONFIG) {
|
||||
echo "[WARN] STAGES_CONFIG not set. Assuming stage '${stageName}' is ENABLED."
|
||||
return true
|
||||
}
|
||||
def config = readJSON text: env.STAGES_CONFIG
|
||||
def value = config[stageName]
|
||||
if (value == null) {
|
||||
echo "[WARN] Stage '${stageName}' not found in config. Defaulting to DISABLED."
|
||||
return false
|
||||
}
|
||||
return value == true
|
||||
} catch (Exception e) {
|
||||
echo "[ERROR] Failed to parse STAGES_CONFIG: ${e.message}"
|
||||
echo "Raw config: ${env.STAGES_CONFIG}"
|
||||
// Решите: включать stage по умолчанию или нет?
|
||||
return false // или true — по вашему усмотрению
|
||||
}
|
||||
}
|
||||
|
||||
def runLibraryTest(String configPath, String libraryName) {
|
||||
try {
|
||||
echo "Executing: 1testrunner -run \"${configPath}\" \"${libraryName}\""
|
||||
runCommand("1testrunner -run \"${configPath}\" \"${libraryName}\"")
|
||||
echo "Test ${libraryName} completed successfully"
|
||||
} catch (Exception e) {
|
||||
echo "ERROR in test ${libraryName}: ${e.getMessage()}"
|
||||
throw e
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,149 @@
|
||||
def runCommand(String command) {
|
||||
if (isUnix()) {
|
||||
sh(script: command)
|
||||
} else {
|
||||
bat(script: command)
|
||||
}
|
||||
}
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label 'Rpm-Agent' // Имя или метка агента
|
||||
}
|
||||
stages {
|
||||
|
||||
stage('Read stages config') {
|
||||
steps {
|
||||
script {
|
||||
def configText = readFile './service/tests_config.json'
|
||||
env.STAGES_CONFIG = configText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Remove oint') {
|
||||
steps {
|
||||
script {
|
||||
// Удаляем oint, если он установлен
|
||||
sh 'rpm -e oint || echo "oint not installed"'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Download oint package') {
|
||||
steps {
|
||||
script {
|
||||
// Скачиваем новый rpm-пакет oint
|
||||
sh 'wget -O oint-2.0.0-1.noarch_ru.rpm https://jenkins.openintegrations.dev/job/OpiBuild/job/OpiRelease/lastSuccessfulBuild/artifact/2.0.0/oint-2.0.0-1.noarch_ru.rpm '
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Install oint package') {
|
||||
steps {
|
||||
script {
|
||||
// Устанавливаем скаченный пакет
|
||||
sh 'rpm -ivh --replacepkgs oint-2.0.0-1.noarch_ru.rpm'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Prepare'){
|
||||
steps{
|
||||
sh 'cd ./src/ru/OInt && opm build && opm install oint-2.0.0.ospx && rm oint-2.0.0.ospx'
|
||||
withCredentials([string(credentialsId: 'gpgkey', variable: 'GPGKEY')]) {
|
||||
sh 'gpg --quiet --batch --yes --decrypt --passphrase="$GPGKEY" --output ./data.json ./data.json.gpg'
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Create ReportPortal launch'){
|
||||
steps{
|
||||
sh 'oscript ./ci/os/internal/Classes/ReportPortalMethods.os start "CLI"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-Core') {
|
||||
when {
|
||||
expression { return shouldRunStage('Core') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPItc_Core.os', 'ПроверитьСоответствиеИБПоследнейСборке'],
|
||||
['./src/ru/OInt/tests/Modules/OPItc_Core.os', 'ПроверитьРасширенныйВызов'],
|
||||
]
|
||||
for (test in tests) {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPItc_WebSocket.os', 'WS_Клиент'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
post{
|
||||
always{
|
||||
script {
|
||||
catchError() {
|
||||
runCommand('oscript ./ci/os/internal/Classes/ReportPortalMethods.os stop')
|
||||
}
|
||||
withCredentials([gitUsernamePassword(credentialsId: 'gitmain', gitToolName: 'Default')]) {
|
||||
sh "git config user.email vitaly.the.alpaca@gmail.com"
|
||||
sh 'git config user.name "Vitaly the Alpaca (bot)"'
|
||||
sh "git config --global core.ignorecase true"
|
||||
sh "git add ."
|
||||
sh 'git commit -m "Test data update (Jenkins)"'
|
||||
sh "git push origin HEAD:main"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def shouldRunStage(stageName) {
|
||||
try {
|
||||
if (!env.STAGES_CONFIG) {
|
||||
echo "[WARN] STAGES_CONFIG not set. Assuming stage '${stageName}' is ENABLED."
|
||||
return true
|
||||
}
|
||||
def config = readJSON text: env.STAGES_CONFIG
|
||||
def value = config[stageName]
|
||||
if (value == null) {
|
||||
echo "[WARN] Stage '${stageName}' not found in config. Defaulting to DISABLED."
|
||||
return false
|
||||
}
|
||||
return value == true
|
||||
} catch (Exception e) {
|
||||
echo "[ERROR] Failed to parse STAGES_CONFIG: ${e.message}"
|
||||
echo "Raw config: ${env.STAGES_CONFIG}"
|
||||
// Решите: включать stage по умолчанию или нет?
|
||||
return false // или true — по вашему усмотрению
|
||||
}
|
||||
}
|
||||
|
||||
def runLibraryTest(String configPath, String libraryName) {
|
||||
try {
|
||||
echo "Executing: 1testrunner -run \"${configPath}\" \"${libraryName}\""
|
||||
runCommand("1testrunner -run \"${configPath}\" \"${libraryName}\"")
|
||||
echo "Test ${libraryName} completed successfully"
|
||||
} catch (Exception e) {
|
||||
echo "ERROR in test ${libraryName}: ${e.getMessage()}"
|
||||
throw e
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,229 @@
|
||||
def runCommand(String command) {
|
||||
if (isUnix()) {
|
||||
sh(script: command)
|
||||
} else {
|
||||
bat(script: command)
|
||||
}
|
||||
}
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label 'windows'
|
||||
}
|
||||
stages {
|
||||
|
||||
stage('Read stages config') {
|
||||
steps {
|
||||
script {
|
||||
def configText = readFile './service/tests_config.json'
|
||||
env.STAGES_CONFIG = configText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Decrypt Data') {
|
||||
steps {
|
||||
powershell encoding: 'UTF-8', script:'cd ./src/en/OInt; opm build; opm install oint-2.0.0.ospx; del oint-2.0.0.ospx'
|
||||
withCredentials([string(credentialsId: 'gpgkey', variable: 'GPGKEY')]) {
|
||||
bat encoding: 'UTF-8', script:'gpg --quiet --batch --yes --decrypt --passphrase="%GPGKEY%" --output ./data.json ./data.json.gpg'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Remove oint.bat if exists') {
|
||||
steps {
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$batFile = "D:/OneScript/bin/oint.bat"
|
||||
if (Test-Path $batFile) {
|
||||
Remove-Item -Path $batFile -Force
|
||||
Write-Host "Файл oint.bat удален."
|
||||
} else {
|
||||
Write-Host "Файл oint.bat не найден, пропускаем удаление."
|
||||
}
|
||||
'''
|
||||
|
||||
// Проверяем, что файл действительно удален
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$batFile = "D:/OneScript/bin/oint.bat"
|
||||
if (Test-Path $batFile) {
|
||||
Write-Error "Ошибка: Файл oint.bat не удален!"
|
||||
exit 1
|
||||
} else {
|
||||
Write-Host "Проверка: oint.bat успешно удален или отсутствовал."
|
||||
}
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Uninstall OInt if installed') {
|
||||
steps {
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$uninstallerPath = "C:\\Program Files (x86)\\OInt\\unins000.exe"
|
||||
if (Test-Path $uninstallerPath) {
|
||||
Write-Host "OInt найден. Запускаем удаление..."
|
||||
Start-Process -FilePath $uninstallerPath -ArgumentList "/VERYSILENT /NORESTART" -Wait
|
||||
Write-Host "Удаление OInt завершено."
|
||||
} else {
|
||||
Write-Host "OInt не установлен. Пропускаем этап удаления."
|
||||
}
|
||||
'''
|
||||
|
||||
// Проверяем, что oint.bat в C:\Program Files (x86)\OInt\bin\oint.bat удален
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$batFile = "C:\\Program Files (x86)\\OInt\\bin\\oint.bat"
|
||||
if (Test-Path $batFile) {
|
||||
Write-Error "Ошибка: oint.bat всё ещё существует после uninstall!"
|
||||
exit 1
|
||||
} else {
|
||||
Write-Host "Проверка: oint.bat после uninstall отсутствует."
|
||||
}
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Prepare Download Dir') {
|
||||
steps {
|
||||
bat 'if not exist "%USERPROFILE%\\Downloads" mkdir "%USERPROFILE%\\Downloads"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Download Installer') {
|
||||
steps {
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$url = "https://jenkins.openintegrations.dev/job/OpiBuild/job/OpiRelease/lastSuccessfulBuild/artifact/2.0.0/oint_2.0.0_installer_en.exe "
|
||||
$output = "$env:USERPROFILE\\Downloads\\oint_installer.exe"
|
||||
Invoke-WebRequest -Uri $url -OutFile $output
|
||||
Write-Host "Инсталлер скачан в: $output"
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Install OInt') {
|
||||
steps {
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$installerPath = "$env:USERPROFILE\\Downloads\\oint_installer.exe"
|
||||
Write-Host "Запускаем установку: $installerPath"
|
||||
Start-Process -FilePath $installerPath -ArgumentList "/VERYSILENT /NORESTART" -NoNewWindow -Wait
|
||||
Write-Host "Установка завершена."
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Verify Installation') {
|
||||
steps {
|
||||
// Проверяем наличие oint.bat в C:\Program Files (x86)\OInt\bin\
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$batFile = "C:\\Program Files (x86)\\OInt\\bin\\oint.bat"
|
||||
if (-not (Test-Path $batFile)) {
|
||||
Write-Error "Ошибка: oint.bat не найден после установки!"
|
||||
exit 1
|
||||
} else {
|
||||
Write-Host "Проверка: oint.bat найден после установки."
|
||||
}
|
||||
'''
|
||||
|
||||
// Проверяем, что where oint выводит нужный путь
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$result = (Get-Command oint -ErrorAction SilentlyContinue).Source
|
||||
$expectedPath = "C:\\Program Files (x86)\\OInt\\bin\\oint.bat"
|
||||
|
||||
if ($result -ne $expectedPath) {
|
||||
Write-Error "Ошибка: Команда 'where oint' указывает не на тот путь: $result"
|
||||
exit 1
|
||||
} else {
|
||||
Write-Host "Проверка: 'where oint' указывает на правильный путь: $result"
|
||||
}
|
||||
'''
|
||||
}
|
||||
}
|
||||
stage('Create ReportPortal launch'){
|
||||
steps{
|
||||
bat encoding: 'UTF-8', script:'chcp 65001 & oscript ./ci/os/internal/Classes/ReportPortalMethods.os start "CLI"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-Core') {
|
||||
when {
|
||||
expression { return shouldRunStage('Core') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPItc_Core.os', 'CheckIBToLastBuildCompliance'],
|
||||
['./src/en/OInt/tests/Modules/OPItc_Core.os', 'ValidateAdvancedCall'],
|
||||
]
|
||||
for (test in tests) {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPItc_WebSocket.os', 'WS_Client'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
post{
|
||||
always{
|
||||
script {
|
||||
catchError() {
|
||||
runCommand('oscript ./ci/os/internal/Classes/ReportPortalMethods.os stop')
|
||||
}
|
||||
withCredentials([gitUsernamePassword(credentialsId: 'gitmain', gitToolName: 'Default')]) {
|
||||
bat "git config user.email vitaly.the.alpaca@gmail.com"
|
||||
bat 'git config user.name "Vitaly the Alpaca (bot)"'
|
||||
bat "git config --global core.ignorecase true"
|
||||
bat "git add ."
|
||||
bat 'git commit -m "Test data update (Jenkins)"'
|
||||
bat "git push origin HEAD:main"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def shouldRunStage(stageName) {
|
||||
try {
|
||||
if (!env.STAGES_CONFIG) {
|
||||
echo "[WARN] STAGES_CONFIG not set. Assuming stage '${stageName}' is ENABLED."
|
||||
return true
|
||||
}
|
||||
def config = readJSON text: env.STAGES_CONFIG
|
||||
def value = config[stageName]
|
||||
if (value == null) {
|
||||
echo "[WARN] Stage '${stageName}' not found in config. Defaulting to DISABLED."
|
||||
return false
|
||||
}
|
||||
return value == true
|
||||
} catch (Exception e) {
|
||||
echo "[ERROR] Failed to parse STAGES_CONFIG: ${e.message}"
|
||||
echo "Raw config: ${env.STAGES_CONFIG}"
|
||||
// Решите: включать stage по умолчанию или нет?
|
||||
return false // или true — по вашему усмотрению
|
||||
}
|
||||
}
|
||||
|
||||
def runLibraryTest(String configPath, String libraryName) {
|
||||
try {
|
||||
echo "Executing: 1testrunner -run \"${configPath}\" \"${libraryName}\""
|
||||
runCommand("1testrunner -run \"${configPath}\" \"${libraryName}\"")
|
||||
echo "Test ${libraryName} completed successfully"
|
||||
} catch (Exception e) {
|
||||
echo "ERROR in test ${libraryName}: ${e.getMessage()}"
|
||||
throw e
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,229 @@
|
||||
def runCommand(String command) {
|
||||
if (isUnix()) {
|
||||
sh(script: command)
|
||||
} else {
|
||||
bat(script: command)
|
||||
}
|
||||
}
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label 'windows'
|
||||
}
|
||||
stages {
|
||||
|
||||
stage('Read stages config') {
|
||||
steps {
|
||||
script {
|
||||
def configText = readFile './service/tests_config.json'
|
||||
env.STAGES_CONFIG = configText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Decrypt Data') {
|
||||
steps {
|
||||
powershell encoding: 'UTF-8', script:'cd ./src/ru/OInt; opm build; opm install oint-2.0.0.ospx; del oint-2.0.0.ospx'
|
||||
withCredentials([string(credentialsId: 'gpgkey', variable: 'GPGKEY')]) {
|
||||
bat encoding: 'UTF-8', script:'gpg --quiet --batch --yes --decrypt --passphrase="%GPGKEY%" --output ./data.json ./data.json.gpg'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Remove oint.bat if exists') {
|
||||
steps {
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$batFile = "D:/OneScript/bin/oint.bat"
|
||||
if (Test-Path $batFile) {
|
||||
Remove-Item -Path $batFile -Force
|
||||
Write-Host "Файл oint.bat удален."
|
||||
} else {
|
||||
Write-Host "Файл oint.bat не найден, пропускаем удаление."
|
||||
}
|
||||
'''
|
||||
|
||||
// Проверяем, что файл действительно удален
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$batFile = "D:/OneScript/bin/oint.bat"
|
||||
if (Test-Path $batFile) {
|
||||
Write-Error "Ошибка: Файл oint.bat не удален!"
|
||||
exit 1
|
||||
} else {
|
||||
Write-Host "Проверка: oint.bat успешно удален или отсутствовал."
|
||||
}
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Uninstall OInt if installed') {
|
||||
steps {
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$uninstallerPath = "C:\\Program Files (x86)\\OInt\\unins000.exe"
|
||||
if (Test-Path $uninstallerPath) {
|
||||
Write-Host "OInt найден. Запускаем удаление..."
|
||||
Start-Process -FilePath $uninstallerPath -ArgumentList "/VERYSILENT /NORESTART" -Wait
|
||||
Write-Host "Удаление OInt завершено."
|
||||
} else {
|
||||
Write-Host "OInt не установлен. Пропускаем этап удаления."
|
||||
}
|
||||
'''
|
||||
|
||||
// Проверяем, что oint.bat в C:\Program Files (x86)\OInt\bin\oint.bat удален
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$batFile = "C:\\Program Files (x86)\\OInt\\bin\\oint.bat"
|
||||
if (Test-Path $batFile) {
|
||||
Write-Error "Ошибка: oint.bat всё ещё существует после uninstall!"
|
||||
exit 1
|
||||
} else {
|
||||
Write-Host "Проверка: oint.bat после uninstall отсутствует."
|
||||
}
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Prepare Download Dir') {
|
||||
steps {
|
||||
bat 'if not exist "%USERPROFILE%\\Downloads" mkdir "%USERPROFILE%\\Downloads"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Download Installer') {
|
||||
steps {
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$url = "https://jenkins.openintegrations.dev/job/OpiBuild/job/OpiRelease/lastSuccessfulBuild/artifact/2.0.0/oint_2.0.0_installer_ru.exe "
|
||||
$output = "$env:USERPROFILE\\Downloads\\oint_installer.exe"
|
||||
Invoke-WebRequest -Uri $url -OutFile $output
|
||||
Write-Host "Инсталлер скачан в: $output"
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Install OInt') {
|
||||
steps {
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$installerPath = "$env:USERPROFILE\\Downloads\\oint_installer.exe"
|
||||
Write-Host "Запускаем установку: $installerPath"
|
||||
Start-Process -FilePath $installerPath -ArgumentList "/VERYSILENT /NORESTART" -NoNewWindow -Wait
|
||||
Write-Host "Установка завершена."
|
||||
'''
|
||||
}
|
||||
}
|
||||
|
||||
stage('Verify Installation') {
|
||||
steps {
|
||||
// Проверяем наличие oint.bat в C:\Program Files (x86)\OInt\bin\
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$batFile = "C:\\Program Files (x86)\\OInt\\bin\\oint.bat"
|
||||
if (-not (Test-Path $batFile)) {
|
||||
Write-Error "Ошибка: oint.bat не найден после установки!"
|
||||
exit 1
|
||||
} else {
|
||||
Write-Host "Проверка: oint.bat найден после установки."
|
||||
}
|
||||
'''
|
||||
|
||||
// Проверяем, что where oint выводит нужный путь
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$result = (Get-Command oint -ErrorAction SilentlyContinue).Source
|
||||
$expectedPath = "C:\\Program Files (x86)\\OInt\\bin\\oint.bat"
|
||||
|
||||
if ($result -ne $expectedPath) {
|
||||
Write-Error "Ошибка: Команда 'where oint' указывает не на тот путь: $result"
|
||||
exit 1
|
||||
} else {
|
||||
Write-Host "Проверка: 'where oint' указывает на правильный путь: $result"
|
||||
}
|
||||
'''
|
||||
}
|
||||
}
|
||||
stage('Create ReportPortal launch'){
|
||||
steps{
|
||||
bat encoding: 'UTF-8', script:'chcp 65001 & oscript ./ci/os/internal/Classes/ReportPortalMethods.os start "CLI"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-Core') {
|
||||
when {
|
||||
expression { return shouldRunStage('Core') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPItc_Core.os', 'ПроверитьСоответствиеИБПоследнейСборке'],
|
||||
['./src/ru/OInt/tests/Modules/OPItc_Core.os', 'ПроверитьРасширенныйВызов'],
|
||||
]
|
||||
for (test in tests) {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPItc_WebSocket.os', 'WS_Клиент'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
post{
|
||||
always{
|
||||
script {
|
||||
catchError() {
|
||||
runCommand('oscript ./ci/os/internal/Classes/ReportPortalMethods.os stop')
|
||||
}
|
||||
withCredentials([gitUsernamePassword(credentialsId: 'gitmain', gitToolName: 'Default')]) {
|
||||
bat "git config user.email vitaly.the.alpaca@gmail.com"
|
||||
bat 'git config user.name "Vitaly the Alpaca (bot)"'
|
||||
bat "git config --global core.ignorecase true"
|
||||
bat "git add ."
|
||||
bat 'git commit -m "Test data update (Jenkins)"'
|
||||
bat "git push origin HEAD:main"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def shouldRunStage(stageName) {
|
||||
try {
|
||||
if (!env.STAGES_CONFIG) {
|
||||
echo "[WARN] STAGES_CONFIG not set. Assuming stage '${stageName}' is ENABLED."
|
||||
return true
|
||||
}
|
||||
def config = readJSON text: env.STAGES_CONFIG
|
||||
def value = config[stageName]
|
||||
if (value == null) {
|
||||
echo "[WARN] Stage '${stageName}' not found in config. Defaulting to DISABLED."
|
||||
return false
|
||||
}
|
||||
return value == true
|
||||
} catch (Exception e) {
|
||||
echo "[ERROR] Failed to parse STAGES_CONFIG: ${e.message}"
|
||||
echo "Raw config: ${env.STAGES_CONFIG}"
|
||||
// Решите: включать stage по умолчанию или нет?
|
||||
return false // или true — по вашему усмотрению
|
||||
}
|
||||
}
|
||||
|
||||
def runLibraryTest(String configPath, String libraryName) {
|
||||
try {
|
||||
echo "Executing: 1testrunner -run \"${configPath}\" \"${libraryName}\""
|
||||
runCommand("1testrunner -run \"${configPath}\" \"${libraryName}\"")
|
||||
echo "Test ${libraryName} completed successfully"
|
||||
} catch (Exception e) {
|
||||
echo "ERROR in test ${libraryName}: ${e.getMessage()}"
|
||||
throw e
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
def runCommand(String command) {
|
||||
if (isUnix()) {
|
||||
sh(script: command)
|
||||
} else {
|
||||
bat(script: command)
|
||||
}
|
||||
}
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label 'Deb-Agent' // Имя или метка агента
|
||||
}
|
||||
stages {
|
||||
|
||||
stage('Read stages config') {
|
||||
steps {
|
||||
script {
|
||||
def configText = readFile './service/tests_config.json'
|
||||
env.STAGES_CONFIG = configText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Remove OInt from OneScript Lib') {
|
||||
steps {
|
||||
script {
|
||||
try {
|
||||
// Удаление каталога /opt/onescript/lib/oint, если существует
|
||||
sh '''
|
||||
DIR_PATH="/opt/onescript/lib/oint"
|
||||
|
||||
if [ -d "$DIR_PATH" ]; then
|
||||
echo "Каталог oint найден. Удаляем..."
|
||||
rm -rf "$DIR_PATH"
|
||||
echo "Каталог oint успешно удален."
|
||||
else
|
||||
echo "Каталог oint не найден. Пропускаем удаление."
|
||||
fi
|
||||
'''
|
||||
|
||||
// Проверяем, что каталог действительно удален
|
||||
sh '''
|
||||
DIR_PATH="/opt/onescript/lib/oint"
|
||||
|
||||
if [ -d "$DIR_PATH" ]; then
|
||||
echo "Ошибка: Каталог oint всё ещё существует после попытки удаления!"
|
||||
exit 1
|
||||
else
|
||||
echo "Проверка: Каталог oint отсутствует после удаления."
|
||||
fi
|
||||
'''
|
||||
} catch (Exception e) {
|
||||
echo "Произошла ошибка при удалении каталога oint: ${e.getMessage()}"
|
||||
currentBuild.result = 'FAILURE'
|
||||
error("Удаление каталога oint завершено с ошибкой.")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Prepare'){
|
||||
steps{
|
||||
sh 'cd ./src/en/OInt && opm build && opm install oint-2.0.0.ospx && rm oint-2.0.0.ospx'
|
||||
withCredentials([string(credentialsId: 'gpgkey', variable: 'GPGKEY')]) {
|
||||
sh 'gpg --quiet --batch --yes --decrypt --passphrase="$GPGKEY" --output ./data.json ./data.json.gpg'
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Create ReportPortal launch'){
|
||||
steps{
|
||||
sh 'oscript ./ci/os/internal/Classes/ReportPortalMethods.os start "OneScript"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-Core') {
|
||||
when {
|
||||
expression { return shouldRunStage('Core') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPIt_Core.os', 'CheckIBToLastBuildCompliance'],
|
||||
['./src/en/OInt/tests/Modules/OPIt_Core.os', 'ValidateAdvancedCall'],
|
||||
]
|
||||
for (test in tests) {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPIt_WebSocket.os', 'WS_Client'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
post{
|
||||
always{
|
||||
script {
|
||||
catchError() {
|
||||
runCommand('oscript ./ci/os/internal/Classes/ReportPortalMethods.os stop')
|
||||
}
|
||||
withCredentials([gitUsernamePassword(credentialsId: 'gitmain', gitToolName: 'Default')]) {
|
||||
sh "git config user.email vitaly.the.alpaca@gmail.com"
|
||||
sh 'git config user.name "Vitaly the Alpaca (bot)"'
|
||||
sh "git config --global core.ignorecase true"
|
||||
sh "git add ."
|
||||
sh 'git commit -m "Test data update (Jenkins)"'
|
||||
sh "git push origin HEAD:main"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def shouldRunStage(stageName) {
|
||||
try {
|
||||
if (!env.STAGES_CONFIG) {
|
||||
echo "[WARN] STAGES_CONFIG not set. Assuming stage '${stageName}' is ENABLED."
|
||||
return true
|
||||
}
|
||||
def config = readJSON text: env.STAGES_CONFIG
|
||||
def value = config[stageName]
|
||||
if (value == null) {
|
||||
echo "[WARN] Stage '${stageName}' not found in config. Defaulting to DISABLED."
|
||||
return false
|
||||
}
|
||||
return value == true
|
||||
} catch (Exception e) {
|
||||
echo "[ERROR] Failed to parse STAGES_CONFIG: ${e.message}"
|
||||
echo "Raw config: ${env.STAGES_CONFIG}"
|
||||
// Решите: включать stage по умолчанию или нет?
|
||||
return false // или true — по вашему усмотрению
|
||||
}
|
||||
}
|
||||
|
||||
def runLibraryTest(String configPath, String libraryName) {
|
||||
try {
|
||||
echo "Executing: 1testrunner -run \"${configPath}\" \"${libraryName}\""
|
||||
runCommand("1testrunner -run \"${configPath}\" \"${libraryName}\"")
|
||||
echo "Test ${libraryName} completed successfully"
|
||||
} catch (Exception e) {
|
||||
echo "ERROR in test ${libraryName}: ${e.getMessage()}"
|
||||
throw e
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
def runCommand(String command) {
|
||||
if (isUnix()) {
|
||||
sh(script: command)
|
||||
} else {
|
||||
bat(script: command)
|
||||
}
|
||||
}
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label 'Deb-Agent' // Имя или метка агента
|
||||
}
|
||||
stages {
|
||||
|
||||
stage('Read stages config') {
|
||||
steps {
|
||||
script {
|
||||
def configText = readFile './service/tests_config.json'
|
||||
env.STAGES_CONFIG = configText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Remove OInt from OneScript Lib') {
|
||||
steps {
|
||||
script {
|
||||
try {
|
||||
// Удаление каталога /opt/onescript/lib/oint, если существует
|
||||
sh '''
|
||||
DIR_PATH="/opt/onescript/lib/oint"
|
||||
|
||||
if [ -d "$DIR_PATH" ]; then
|
||||
echo "Каталог oint найден. Удаляем..."
|
||||
rm -rf "$DIR_PATH"
|
||||
echo "Каталог oint успешно удален."
|
||||
else
|
||||
echo "Каталог oint не найден. Пропускаем удаление."
|
||||
fi
|
||||
'''
|
||||
|
||||
// Проверяем, что каталог действительно удален
|
||||
sh '''
|
||||
DIR_PATH="/opt/onescript/lib/oint"
|
||||
|
||||
if [ -d "$DIR_PATH" ]; then
|
||||
echo "Ошибка: Каталог oint всё ещё существует после попытки удаления!"
|
||||
exit 1
|
||||
else
|
||||
echo "Проверка: Каталог oint отсутствует после удаления."
|
||||
fi
|
||||
'''
|
||||
} catch (Exception e) {
|
||||
echo "Произошла ошибка при удалении каталога oint: ${e.getMessage()}"
|
||||
currentBuild.result = 'FAILURE'
|
||||
error("Удаление каталога oint завершено с ошибкой.")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Prepare'){
|
||||
steps{
|
||||
sh 'cd ./src/ru/OInt && opm build && opm install oint-2.0.0.ospx && rm oint-2.0.0.ospx'
|
||||
withCredentials([string(credentialsId: 'gpgkey', variable: 'GPGKEY')]) {
|
||||
sh 'gpg --quiet --batch --yes --decrypt --passphrase="$GPGKEY" --output ./data.json ./data.json.gpg'
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Create ReportPortal launch'){
|
||||
steps{
|
||||
sh 'oscript ./ci/os/internal/Classes/ReportPortalMethods.os start "OneScript"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-Core') {
|
||||
when {
|
||||
expression { return shouldRunStage('Core') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPIt_Core.os', 'ПроверитьСоответствиеИБПоследнейСборке'],
|
||||
['./src/ru/OInt/tests/Modules/OPIt_Core.os', 'ПроверитьРасширенныйВызов'],
|
||||
]
|
||||
for (test in tests) {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPIt_WebSocket.os', 'WS_Клиент'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
post{
|
||||
always{
|
||||
script {
|
||||
catchError() {
|
||||
runCommand('oscript ./ci/os/internal/Classes/ReportPortalMethods.os stop')
|
||||
}
|
||||
withCredentials([gitUsernamePassword(credentialsId: 'gitmain', gitToolName: 'Default')]) {
|
||||
sh "git config user.email vitaly.the.alpaca@gmail.com"
|
||||
sh 'git config user.name "Vitaly the Alpaca (bot)"'
|
||||
sh "git config --global core.ignorecase true"
|
||||
sh "git add ."
|
||||
sh 'git commit -m "Test data update (Jenkins)"'
|
||||
sh "git push origin HEAD:main"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def shouldRunStage(stageName) {
|
||||
try {
|
||||
if (!env.STAGES_CONFIG) {
|
||||
echo "[WARN] STAGES_CONFIG not set. Assuming stage '${stageName}' is ENABLED."
|
||||
return true
|
||||
}
|
||||
def config = readJSON text: env.STAGES_CONFIG
|
||||
def value = config[stageName]
|
||||
if (value == null) {
|
||||
echo "[WARN] Stage '${stageName}' not found in config. Defaulting to DISABLED."
|
||||
return false
|
||||
}
|
||||
return value == true
|
||||
} catch (Exception e) {
|
||||
echo "[ERROR] Failed to parse STAGES_CONFIG: ${e.message}"
|
||||
echo "Raw config: ${env.STAGES_CONFIG}"
|
||||
// Решите: включать stage по умолчанию или нет?
|
||||
return false // или true — по вашему усмотрению
|
||||
}
|
||||
}
|
||||
|
||||
def runLibraryTest(String configPath, String libraryName) {
|
||||
try {
|
||||
echo "Executing: 1testrunner -run \"${configPath}\" \"${libraryName}\""
|
||||
runCommand("1testrunner -run \"${configPath}\" \"${libraryName}\"")
|
||||
echo "Test ${libraryName} completed successfully"
|
||||
} catch (Exception e) {
|
||||
echo "ERROR in test ${libraryName}: ${e.getMessage()}"
|
||||
throw e
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
def runCommand(String command) {
|
||||
if (isUnix()) {
|
||||
sh(script: command)
|
||||
} else {
|
||||
bat(script: command)
|
||||
}
|
||||
}
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label 'Rpm-Agent' // Имя или метка агента
|
||||
}
|
||||
stages {
|
||||
|
||||
stage('Read stages config') {
|
||||
steps {
|
||||
script {
|
||||
def configText = readFile './service/tests_config.json'
|
||||
env.STAGES_CONFIG = configText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Remove OInt from OneScript Lib') {
|
||||
steps {
|
||||
script {
|
||||
try {
|
||||
// Удаление каталога /opt/onescript/lib/oint, если существует
|
||||
sh '''
|
||||
DIR_PATH="/opt/onescript/lib/oint"
|
||||
|
||||
if [ -d "$DIR_PATH" ]; then
|
||||
echo "Каталог oint найден. Удаляем..."
|
||||
rm -rf "$DIR_PATH"
|
||||
echo "Каталог oint успешно удален."
|
||||
else
|
||||
echo "Каталог oint не найден. Пропускаем удаление."
|
||||
fi
|
||||
'''
|
||||
|
||||
// Проверяем, что каталог действительно удален
|
||||
sh '''
|
||||
DIR_PATH="/opt/onescript/lib/oint"
|
||||
|
||||
if [ -d "$DIR_PATH" ]; then
|
||||
echo "Ошибка: Каталог oint всё ещё существует после попытки удаления!"
|
||||
exit 1
|
||||
else
|
||||
echo "Проверка: Каталог oint отсутствует после удаления."
|
||||
fi
|
||||
'''
|
||||
} catch (Exception e) {
|
||||
echo "Произошла ошибка при удалении каталога oint: ${e.getMessage()}"
|
||||
currentBuild.result = 'FAILURE'
|
||||
error("Удаление каталога oint завершено с ошибкой.")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Prepare'){
|
||||
steps{
|
||||
sh 'cd ./src/en/OInt && opm build && opm install oint-2.0.0.ospx && rm oint-2.0.0.ospx'
|
||||
withCredentials([string(credentialsId: 'gpgkey', variable: 'GPGKEY')]) {
|
||||
sh 'gpg --quiet --batch --yes --decrypt --passphrase="$GPGKEY" --output ./data.json ./data.json.gpg'
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Create ReportPortal launch'){
|
||||
steps{
|
||||
sh 'oscript ./ci/os/internal/Classes/ReportPortalMethods.os start "OneScript"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-Core') {
|
||||
when {
|
||||
expression { return shouldRunStage('Core') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPIt_Core.os', 'CheckIBToLastBuildCompliance'],
|
||||
['./src/en/OInt/tests/Modules/OPIt_Core.os', 'ValidateAdvancedCall'],
|
||||
]
|
||||
for (test in tests) {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPIt_WebSocket.os', 'WS_Client'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
post{
|
||||
always{
|
||||
script {
|
||||
catchError() {
|
||||
runCommand('oscript ./ci/os/internal/Classes/ReportPortalMethods.os stop')
|
||||
}
|
||||
withCredentials([gitUsernamePassword(credentialsId: 'gitmain', gitToolName: 'Default')]) {
|
||||
sh "git config user.email vitaly.the.alpaca@gmail.com"
|
||||
sh 'git config user.name "Vitaly the Alpaca (bot)"'
|
||||
sh "git config --global core.ignorecase true"
|
||||
sh "git add ."
|
||||
sh 'git commit -m "Test data update (Jenkins)"'
|
||||
sh "git push origin HEAD:main"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def shouldRunStage(stageName) {
|
||||
try {
|
||||
if (!env.STAGES_CONFIG) {
|
||||
echo "[WARN] STAGES_CONFIG not set. Assuming stage '${stageName}' is ENABLED."
|
||||
return true
|
||||
}
|
||||
def config = readJSON text: env.STAGES_CONFIG
|
||||
def value = config[stageName]
|
||||
if (value == null) {
|
||||
echo "[WARN] Stage '${stageName}' not found in config. Defaulting to DISABLED."
|
||||
return false
|
||||
}
|
||||
return value == true
|
||||
} catch (Exception e) {
|
||||
echo "[ERROR] Failed to parse STAGES_CONFIG: ${e.message}"
|
||||
echo "Raw config: ${env.STAGES_CONFIG}"
|
||||
// Решите: включать stage по умолчанию или нет?
|
||||
return false // или true — по вашему усмотрению
|
||||
}
|
||||
}
|
||||
|
||||
def runLibraryTest(String configPath, String libraryName) {
|
||||
try {
|
||||
echo "Executing: 1testrunner -run \"${configPath}\" \"${libraryName}\""
|
||||
runCommand("1testrunner -run \"${configPath}\" \"${libraryName}\"")
|
||||
echo "Test ${libraryName} completed successfully"
|
||||
} catch (Exception e) {
|
||||
echo "ERROR in test ${libraryName}: ${e.getMessage()}"
|
||||
throw e
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
def runCommand(String command) {
|
||||
if (isUnix()) {
|
||||
sh(script: command)
|
||||
} else {
|
||||
bat(script: command)
|
||||
}
|
||||
}
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label 'Rpm-Agent' // Имя или метка агента
|
||||
}
|
||||
stages {
|
||||
|
||||
stage('Read stages config') {
|
||||
steps {
|
||||
script {
|
||||
def configText = readFile './service/tests_config.json'
|
||||
env.STAGES_CONFIG = configText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Remove OInt from OneScript Lib') {
|
||||
steps {
|
||||
script {
|
||||
try {
|
||||
// Удаление каталога /opt/onescript/lib/oint, если существует
|
||||
sh '''
|
||||
DIR_PATH="/opt/onescript/lib/oint"
|
||||
|
||||
if [ -d "$DIR_PATH" ]; then
|
||||
echo "Каталог oint найден. Удаляем..."
|
||||
rm -rf "$DIR_PATH"
|
||||
echo "Каталог oint успешно удален."
|
||||
else
|
||||
echo "Каталог oint не найден. Пропускаем удаление."
|
||||
fi
|
||||
'''
|
||||
|
||||
// Проверяем, что каталог действительно удален
|
||||
sh '''
|
||||
DIR_PATH="/opt/onescript/lib/oint"
|
||||
|
||||
if [ -d "$DIR_PATH" ]; then
|
||||
echo "Ошибка: Каталог oint всё ещё существует после попытки удаления!"
|
||||
exit 1
|
||||
else
|
||||
echo "Проверка: Каталог oint отсутствует после удаления."
|
||||
fi
|
||||
'''
|
||||
} catch (Exception e) {
|
||||
echo "Произошла ошибка при удалении каталога oint: ${e.getMessage()}"
|
||||
currentBuild.result = 'FAILURE'
|
||||
error("Удаление каталога oint завершено с ошибкой.")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Prepare'){
|
||||
steps{
|
||||
sh 'cd ./src/ru/OInt && opm build && opm install oint-2.0.0.ospx && rm oint-2.0.0.ospx'
|
||||
withCredentials([string(credentialsId: 'gpgkey', variable: 'GPGKEY')]) {
|
||||
sh 'gpg --quiet --batch --yes --decrypt --passphrase="$GPGKEY" --output ./data.json ./data.json.gpg'
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Create ReportPortal launch'){
|
||||
steps{
|
||||
sh 'oscript ./ci/os/internal/Classes/ReportPortalMethods.os start "OneScript"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-Core') {
|
||||
when {
|
||||
expression { return shouldRunStage('Core') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPIt_Core.os', 'ПроверитьСоответствиеИБПоследнейСборке'],
|
||||
['./src/ru/OInt/tests/Modules/OPIt_Core.os', 'ПроверитьРасширенныйВызов'],
|
||||
]
|
||||
for (test in tests) {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPIt_WebSocket.os', 'WS_Клиент'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
post{
|
||||
always{
|
||||
script {
|
||||
catchError() {
|
||||
runCommand('oscript ./ci/os/internal/Classes/ReportPortalMethods.os stop')
|
||||
}
|
||||
withCredentials([gitUsernamePassword(credentialsId: 'gitmain', gitToolName: 'Default')]) {
|
||||
sh "git config user.email vitaly.the.alpaca@gmail.com"
|
||||
sh 'git config user.name "Vitaly the Alpaca (bot)"'
|
||||
sh "git config --global core.ignorecase true"
|
||||
sh "git add ."
|
||||
sh 'git commit -m "Test data update (Jenkins)"'
|
||||
sh "git push origin HEAD:main"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def shouldRunStage(stageName) {
|
||||
try {
|
||||
if (!env.STAGES_CONFIG) {
|
||||
echo "[WARN] STAGES_CONFIG not set. Assuming stage '${stageName}' is ENABLED."
|
||||
return true
|
||||
}
|
||||
def config = readJSON text: env.STAGES_CONFIG
|
||||
def value = config[stageName]
|
||||
if (value == null) {
|
||||
echo "[WARN] Stage '${stageName}' not found in config. Defaulting to DISABLED."
|
||||
return false
|
||||
}
|
||||
return value == true
|
||||
} catch (Exception e) {
|
||||
echo "[ERROR] Failed to parse STAGES_CONFIG: ${e.message}"
|
||||
echo "Raw config: ${env.STAGES_CONFIG}"
|
||||
// Решите: включать stage по умолчанию или нет?
|
||||
return false // или true — по вашему усмотрению
|
||||
}
|
||||
}
|
||||
|
||||
def runLibraryTest(String configPath, String libraryName) {
|
||||
try {
|
||||
echo "Executing: 1testrunner -run \"${configPath}\" \"${libraryName}\""
|
||||
runCommand("1testrunner -run \"${configPath}\" \"${libraryName}\"")
|
||||
echo "Test ${libraryName} completed successfully"
|
||||
} catch (Exception e) {
|
||||
echo "ERROR in test ${libraryName}: ${e.getMessage()}"
|
||||
throw e
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
def runCommand(String command) {
|
||||
if (isUnix()) {
|
||||
sh(script: command)
|
||||
} else {
|
||||
bat(script: command)
|
||||
}
|
||||
}
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label 'windows'
|
||||
}
|
||||
stages {
|
||||
|
||||
stage('Read stages config') {
|
||||
steps {
|
||||
script {
|
||||
def configText = readFile './service/tests_config.json'
|
||||
env.STAGES_CONFIG = configText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Remove OInt from OneScript Lib') {
|
||||
steps {
|
||||
script {
|
||||
try {
|
||||
// Удаление каталога C:\Program Files\OneScript\lib\oint, если существует
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$dirPath = "D:/OneScript/lib/oint"
|
||||
if (Test-Path $dirPath) {
|
||||
Write-Host "Каталог oint найден. Удаляем..."
|
||||
Remove-Item -Path $dirPath -Recurse -Force
|
||||
Write-Host "Каталог oint успешно удален."
|
||||
} else {
|
||||
Write-Host "Каталог oint не найден. Пропускаем удаление."
|
||||
}
|
||||
'''
|
||||
|
||||
// Проверяем, что каталог действительно удален
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$dirPath = "D:/OneScript/lib/oint"
|
||||
if (Test-Path $dirPath) {
|
||||
Write-Error "Ошибка: Каталог oint всё ещё существует после попытки удаления!"
|
||||
exit 1
|
||||
} else {
|
||||
Write-Host "Проверка: Каталог oint отсутствует после удаления."
|
||||
}
|
||||
'''
|
||||
} catch (Exception e) {
|
||||
echo "Произошла ошибка при удалении каталога oint: ${e.getMessage()}"
|
||||
currentBuild.result = 'FAILURE'
|
||||
error("Удаление каталога oint завершено с ошибкой.")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Build OInt from source and decrypt secret data'){
|
||||
steps{
|
||||
powershell encoding: 'UTF-8', script:'cd ./src/en/OInt; opm build; opm install oint-2.0.0.ospx; del oint-2.0.0.ospx'
|
||||
withCredentials([string(credentialsId: 'gpgkey', variable: 'GPGKEY')]) {
|
||||
bat encoding: 'UTF-8', script:'gpg --quiet --batch --yes --decrypt --passphrase="%GPGKEY%" --output ./data.json ./data.json.gpg'
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Create ReportPortal launch'){
|
||||
steps{
|
||||
bat encoding: 'UTF-8', script:'chcp 65001 & oscript ./ci/os/internal/Classes/ReportPortalMethods.os start "OneScript"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-Core') {
|
||||
when {
|
||||
expression { return shouldRunStage('Core') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPIt_Core.os', 'CheckIBToLastBuildCompliance'],
|
||||
['./src/en/OInt/tests/Modules/OPIt_Core.os', 'ValidateAdvancedCall'],
|
||||
]
|
||||
for (test in tests) {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/en/OInt/tests/Modules/OPIt_WebSocket.os', 'WS_Client'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
post{
|
||||
always{
|
||||
script {
|
||||
catchError() {
|
||||
runCommand('oscript ./ci/os/internal/Classes/ReportPortalMethods.os stop')
|
||||
}
|
||||
withCredentials([gitUsernamePassword(credentialsId: 'gitmain', gitToolName: 'Default')]) {
|
||||
bat "git config user.email vitaly.the.alpaca@gmail.com"
|
||||
bat 'git config user.name "Vitaly the Alpaca (bot)"'
|
||||
bat "git config --global core.ignorecase true"
|
||||
bat "git add ."
|
||||
bat 'git commit -m "Test data update (Jenkins)"'
|
||||
bat "git push origin HEAD:main"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def shouldRunStage(stageName) {
|
||||
try {
|
||||
if (!env.STAGES_CONFIG) {
|
||||
echo "[WARN] STAGES_CONFIG not set. Assuming stage '${stageName}' is ENABLED."
|
||||
return true
|
||||
}
|
||||
def config = readJSON text: env.STAGES_CONFIG
|
||||
def value = config[stageName]
|
||||
if (value == null) {
|
||||
echo "[WARN] Stage '${stageName}' not found in config. Defaulting to DISABLED."
|
||||
return false
|
||||
}
|
||||
return value == true
|
||||
} catch (Exception e) {
|
||||
echo "[ERROR] Failed to parse STAGES_CONFIG: ${e.message}"
|
||||
echo "Raw config: ${env.STAGES_CONFIG}"
|
||||
// Решите: включать stage по умолчанию или нет?
|
||||
return false // или true — по вашему усмотрению
|
||||
}
|
||||
}
|
||||
|
||||
def runLibraryTest(String configPath, String libraryName) {
|
||||
try {
|
||||
echo "Executing: 1testrunner -run \"${configPath}\" \"${libraryName}\""
|
||||
runCommand("1testrunner -run \"${configPath}\" \"${libraryName}\"")
|
||||
echo "Test ${libraryName} completed successfully"
|
||||
} catch (Exception e) {
|
||||
echo "ERROR in test ${libraryName}: ${e.getMessage()}"
|
||||
throw e
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
def runCommand(String command) {
|
||||
if (isUnix()) {
|
||||
sh(script: command)
|
||||
} else {
|
||||
bat(script: command)
|
||||
}
|
||||
}
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label 'windows'
|
||||
}
|
||||
stages {
|
||||
|
||||
stage('Read stages config') {
|
||||
steps {
|
||||
script {
|
||||
def configText = readFile './service/tests_config.json'
|
||||
env.STAGES_CONFIG = configText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Remove OInt from OneScript Lib') {
|
||||
steps {
|
||||
script {
|
||||
try {
|
||||
// Удаление каталога C:\Program Files\OneScript\lib\oint, если существует
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$dirPath = "D:/OneScript/lib/oint"
|
||||
if (Test-Path $dirPath) {
|
||||
Write-Host "Каталог oint найден. Удаляем..."
|
||||
Remove-Item -Path $dirPath -Recurse -Force
|
||||
Write-Host "Каталог oint успешно удален."
|
||||
} else {
|
||||
Write-Host "Каталог oint не найден. Пропускаем удаление."
|
||||
}
|
||||
'''
|
||||
|
||||
// Проверяем, что каталог действительно удален
|
||||
powershell encoding: 'UTF-8', script: '''
|
||||
$dirPath = "D:/OneScript/lib/oint"
|
||||
if (Test-Path $dirPath) {
|
||||
Write-Error "Ошибка: Каталог oint всё ещё существует после попытки удаления!"
|
||||
exit 1
|
||||
} else {
|
||||
Write-Host "Проверка: Каталог oint отсутствует после удаления."
|
||||
}
|
||||
'''
|
||||
} catch (Exception e) {
|
||||
echo "Произошла ошибка при удалении каталога oint: ${e.getMessage()}"
|
||||
currentBuild.result = 'FAILURE'
|
||||
error("Удаление каталога oint завершено с ошибкой.")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Build OInt from source and decrypt secret data'){
|
||||
steps{
|
||||
powershell encoding: 'UTF-8', script:'cd ./src/ru/OInt; opm build; opm install oint-2.0.0.ospx; del oint-2.0.0.ospx'
|
||||
withCredentials([string(credentialsId: 'gpgkey', variable: 'GPGKEY')]) {
|
||||
bat encoding: 'UTF-8', script:'gpg --quiet --batch --yes --decrypt --passphrase="%GPGKEY%" --output ./data.json ./data.json.gpg'
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Create ReportPortal launch'){
|
||||
steps{
|
||||
bat encoding: 'UTF-8', script:'chcp 65001 & oscript ./ci/os/internal/Classes/ReportPortalMethods.os start "OneScript"'
|
||||
}
|
||||
}
|
||||
|
||||
stage('Testing-Core') {
|
||||
when {
|
||||
expression { return shouldRunStage('Core') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPIt_Core.os', 'ПроверитьСоответствиеИБПоследнейСборке'],
|
||||
['./src/ru/OInt/tests/Modules/OPIt_Core.os', 'ПроверитьРасширенныйВызов'],
|
||||
]
|
||||
for (test in tests) {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Testing-WebSocket') {
|
||||
when {
|
||||
expression { return shouldRunStage('WebSocket') }
|
||||
}
|
||||
steps {
|
||||
script {
|
||||
def tests = [
|
||||
['./src/ru/OInt/tests/Modules/OPIt_WebSocket.os', 'WS_Клиент'],
|
||||
]
|
||||
for (test in tests) {
|
||||
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
|
||||
runLibraryTest(test[0], test[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
post{
|
||||
always{
|
||||
script {
|
||||
catchError() {
|
||||
runCommand('oscript ./ci/os/internal/Classes/ReportPortalMethods.os stop')
|
||||
}
|
||||
withCredentials([gitUsernamePassword(credentialsId: 'gitmain', gitToolName: 'Default')]) {
|
||||
bat "git config user.email vitaly.the.alpaca@gmail.com"
|
||||
bat 'git config user.name "Vitaly the Alpaca (bot)"'
|
||||
bat "git config --global core.ignorecase true"
|
||||
bat "git add ."
|
||||
bat 'git commit -m "Test data update (Jenkins)"'
|
||||
bat "git push origin HEAD:main"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def shouldRunStage(stageName) {
|
||||
try {
|
||||
if (!env.STAGES_CONFIG) {
|
||||
echo "[WARN] STAGES_CONFIG not set. Assuming stage '${stageName}' is ENABLED."
|
||||
return true
|
||||
}
|
||||
def config = readJSON text: env.STAGES_CONFIG
|
||||
def value = config[stageName]
|
||||
if (value == null) {
|
||||
echo "[WARN] Stage '${stageName}' not found in config. Defaulting to DISABLED."
|
||||
return false
|
||||
}
|
||||
return value == true
|
||||
} catch (Exception e) {
|
||||
echo "[ERROR] Failed to parse STAGES_CONFIG: ${e.message}"
|
||||
echo "Raw config: ${env.STAGES_CONFIG}"
|
||||
// Решите: включать stage по умолчанию или нет?
|
||||
return false // или true — по вашему усмотрению
|
||||
}
|
||||
}
|
||||
|
||||
def runLibraryTest(String configPath, String libraryName) {
|
||||
try {
|
||||
echo "Executing: 1testrunner -run \"${configPath}\" \"${libraryName}\""
|
||||
runCommand("1testrunner -run \"${configPath}\" \"${libraryName}\"")
|
||||
echo "Test ${libraryName} completed successfully"
|
||||
} catch (Exception e) {
|
||||
echo "ERROR in test ${libraryName}: ${e.getMessage()}"
|
||||
throw e
|
||||
}
|
||||
}
|
||||
@@ -17,11 +17,13 @@ import Admonition from '@theme/Admonition';
|
||||
<Tabs>
|
||||
<TabItem value="params" label="Parameters" default>
|
||||
|
||||
`Function CloseConnection(Val Connection) Export`
|
||||
`Function CloseConnection(Val Connection, Val Code = 1000, Val Reason = "") Export`
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Connection | - | Arbitrary | ✔ | Connection, See CreateConnection |
|
||||
| Code | - | Number | ✖ | Status code |
|
||||
| Reason | - | String | ✖ | Close message |
|
||||
|
||||
|
||||
<div className="return-value-note">
|
||||
|
||||
@@ -17,13 +17,14 @@ import Admonition from '@theme/Admonition';
|
||||
<Tabs>
|
||||
<TabItem value="params" label="Parameters" default>
|
||||
|
||||
`Function CreateConnection(Val Address, Val Tls = Undefined, Val Proxy = Undefined, Val Logging = Undefined) Export`
|
||||
`Function CreateConnection(Val Address, Val Tls = Undefined, Val Proxy = Undefined, Val Headers = Undefined, Val Logging = Undefined) Export`
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Address | - | String | ✔ | Address and port |
|
||||
| Tls | - | Structure Of KeyAndValue | ✖ | TLS settings, if necessary. See GetTlsSettings |
|
||||
| Proxy | - | Structure Of KeyAndValue | ✖ | Proxy settings, if required. See GetProxySettings |
|
||||
| Headers | - | Map Of KeyAndValue | ✖ | Map of additional HTTP headers for handshake |
|
||||
| Logging | - | Structure Of KeyAndValue | ✖ | Logging settings. See GetLoggingSettings |
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
sidebar_position: 5
|
||||
|
||||
description: Get message and other functions to work with WebSocket in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, WebSocket]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
sidebar_position: 8
|
||||
sidebar_class_name: doc-no-cli
|
||||
description: Get TLS settings and other functions to work with WebSocket in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, WebSocket]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 7
|
||||
sidebar_position: 9
|
||||
sidebar_class_name: doc-no-cli
|
||||
description: Is client object and other functions to work with WebSocket in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, WebSocket]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
sidebar_position: 7
|
||||
|
||||
description: Send binary message and other functions to work with WebSocket in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, WebSocket]
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
|
||||
description: Send ping and other functions to work with WebSocket in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, WebSocket]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
import Admonition from '@theme/Admonition';
|
||||
|
||||
# Send ping
|
||||
Sends a ping to the remote server
|
||||
|
||||
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="params" label="Parameters" default>
|
||||
|
||||
`Function SendPing(Val Connection) Export`
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Connection | --conn | Arbitrary | ✔ | Connection, See CreateConnection |
|
||||
|
||||
|
||||
<div className="return-value-note">
|
||||
<div className="return-value-note__title">Returns</div>
|
||||
<div className="return-value-note__value">
|
||||
Map Of KeyAndValue - Execution result
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="extended" label={<span>Advanced call{' '}<a href="/docs/Start/Advanced-call" target="_blank" rel="noreferrer" title="About advanced call" onClick={(e) => e.stopPropagation()}>?</a></span>}>
|
||||
|
||||
*This method has no additional advanced call parameters.*
|
||||
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
|
||||
description: Send pong and other functions to work with WebSocket in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, WebSocket]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
import Admonition from '@theme/Admonition';
|
||||
|
||||
# Send pong
|
||||
Sends a pong to the remote server
|
||||
|
||||
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="params" label="Parameters" default>
|
||||
|
||||
`Function SendPong(Val Connection) Export`
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Connection | --conn | Arbitrary | ✔ | Connection, See CreateConnection |
|
||||
|
||||
|
||||
<div className="return-value-note">
|
||||
<div className="return-value-note__title">Returns</div>
|
||||
<div className="return-value-note__value">
|
||||
Map Of KeyAndValue - Execution result
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="extended" label={<span>Advanced call{' '}<a href="/docs/Start/Advanced-call" target="_blank" rel="noreferrer" title="About advanced call" onClick={(e) => e.stopPropagation()}>?</a></span>}>
|
||||
|
||||
*This method has no additional advanced call parameters.*
|
||||
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
sidebar_position: 6
|
||||
|
||||
description: Send text message and other functions to work with WebSocket in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, WebSocket]
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 8
|
||||
sidebar_position: 2
|
||||
sidebar_class_name: doc-no-cli
|
||||
description: Get log and other functions to work with WebSocket in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, WebSocket]
|
||||
@@ -21,7 +21,7 @@ import Admonition from '@theme/Admonition';
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| ServerObject | - | Arbitrary | ✔ | Object of running server component |
|
||||
| ServerObject | - | Arbitrary | ✔ | Server or client component object |
|
||||
| AsString | - | Boolean | ✖ | True > returns log as a single string, False > as an array |
|
||||
| EventCount | - | Number | ✖ | Number of recent events to retrieve. 0 > no limits |
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 9
|
||||
sidebar_position: 8
|
||||
sidebar_class_name: doc-no-cli
|
||||
description: Is server object and other functions to work with WebSocket in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, WebSocket]
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"Постфикс":""}
|
||||
@@ -0,0 +1 @@
|
||||
{"Постфикс":""}
|
||||
@@ -0,0 +1 @@
|
||||
{"Постфикс":""}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"Постфикс":""}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"Постфикс":""}
|
||||
@@ -0,0 +1 @@
|
||||
{"Постфикс":""}
|
||||
@@ -0,0 +1 @@
|
||||
{"Постфикс":""}
|
||||
@@ -0,0 +1 @@
|
||||
{"Постфикс":""}
|
||||
@@ -0,0 +1 @@
|
||||
{"Постфикс":""}
|
||||
@@ -0,0 +1,10 @@
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ЗакрытьСоединение", Постфикс);
|
||||
@@ -0,0 +1,8 @@
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Соединение, "WebSocket", "ОткрытьСоединение", Постфикс);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
@@ -0,0 +1,19 @@
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
ИсходнаяСтрока = "binary-message-" + Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
|
||||
Данные = ПолучитьДвоичныеДанныеИзСтроки(ИсходнаяСтрока);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ОтправитьДвоичноеСообщение(Соединение, Данные);
|
||||
Проверка = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
Проверка = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОтправитьДвоичноеСообщение", Постфикс);
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Проверка , "WebSocket", "ОтправитьДвоичноеСообщение", "Проверка, " + Постфикс, ИсходнаяСтрока);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ОтправитьПинг(Соединение);
|
||||
Проверка = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
Проверка = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОтправитьПинг", Постфикс);
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Проверка , "WebSocket", "ОтправитьПинг", "Проверка, " + Постфикс);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ОтправитьПонг(Соединение);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОтправитьПонг", Постфикс);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
@@ -0,0 +1,18 @@
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
Сообщение = "text-message-" + Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ОтправитьТекстовоеСообщение(Соединение, Сообщение);
|
||||
Проверка = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
Проверка = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОтправитьТекстовоеСообщение", Постфикс);
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Проверка , "WebSocket", "ОтправитьТекстовоеСообщение", "Проверка, " + Постфикс, Сообщение);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
@@ -0,0 +1,4 @@
|
||||
Постфикс = "";
|
||||
Результат = OPI_WebSocket.ПолучитьНастройкиTls(Истина);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ПолучитьНастройкиTls", Постфикс);
|
||||
@@ -0,0 +1,15 @@
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
Сообщение = "echo-text-" + Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ПолучитьСообщение", Постфикс, Сообщение);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ЭтоОбъектКлиента(Соединение);
|
||||
Иначе
|
||||
Результат = OPI_WebSocket.ЭтоОбъектКлиента("not-a-client");
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ЭтоОбъектКлиента", Постфикс);
|
||||
|
||||
Результат = OPI_WebSocket.ЭтоОбъектКлиента("not-a-client");
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ЭтоОбъектКлиента", "Ложь, " + Постфикс);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
+14
-1
@@ -17,11 +17,13 @@ import Admonition from '@theme/Admonition';
|
||||
<Tabs>
|
||||
<TabItem value="params" label="Параметры" default>
|
||||
|
||||
`Функция ЗакрытьСоединение(Знач Соединение) Экспорт`
|
||||
`Функция ЗакрытьСоединение(Знач Соединение, Знач Код = 1000, Знач Причина = "") Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| Соединение | - | Произвольный | ✔ | Соединение, См. [`ОткрытьСоединение`](/docs/WebSocket/Client-methods/Create-connection) |
|
||||
| Код | - | Число | ✖ | Код состояния |
|
||||
| Причина | - | Строка | ✖ | Текстовое сообщение при закрытии |
|
||||
|
||||
|
||||
<div className="return-value-note">
|
||||
@@ -49,7 +51,18 @@ import Admonition from '@theme/Admonition';
|
||||
<br/>
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ЗакрытьСоединение", Постфикс);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
+11
-1
@@ -17,13 +17,14 @@ import Admonition from '@theme/Admonition';
|
||||
<Tabs>
|
||||
<TabItem value="params" label="Параметры" default>
|
||||
|
||||
`Функция ОткрытьСоединение(Знач Адрес, Знач Tls = Неопределено, Знач Прокси = Неопределено, Знач Логирование = Неопределено) Экспорт`
|
||||
`Функция ОткрытьСоединение(Знач Адрес, Знач Tls = Неопределено, Знач Прокси = Неопределено, Знач Заголовки = Неопределено, Знач Логирование = Неопределено) Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| Адрес | - | Строка | ✔ | Адрес и порт для подключения |
|
||||
| Tls | - | Структура Из КлючИЗначение | ✖ | Настройки TLS, если необходимо. См. [`ПолучитьНастройкиTls`](/docs/WebSocket/Client-methods/Get-tls-settings) |
|
||||
| Прокси | - | Структура Из КлючИЗначение | ✖ | Настройки прокси, если необходимо. См. ПолучитьНастройкиПрокси |
|
||||
| Заголовки | - | Соответствие Из КлючИЗначение | ✖ | Соответствие дополнительных HTTP заголовков для handshake |
|
||||
| Логирование | - | Структура Из КлючИЗначение | ✖ | Настройки логирования. См. [`ПолучитьНастройкиЛогирования`](/docs/WebSocket/Common/Get-logging-settings) |
|
||||
|
||||
|
||||
@@ -52,7 +53,16 @@ import Admonition from '@theme/Admonition';
|
||||
<br/>
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Соединение, "WebSocket", "ОткрытьСоединение", Постфикс);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
+17
-1
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
sidebar_position: 5
|
||||
|
||||
description: Получить сообщение и другие функции для работы с WebSocket в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, WebSocket]
|
||||
@@ -43,7 +43,23 @@ import Admonition from '@theme/Admonition';
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
Сообщение = "echo-text-" + Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ПолучитьСообщение", Постфикс, Сообщение);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
sidebar_position: 8
|
||||
sidebar_class_name: doc-no-cli
|
||||
description: Получить настройки TLS и другие функции для работы с WebSocket в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, WebSocket]
|
||||
@@ -53,7 +53,12 @@ import Admonition from '@theme/Admonition';
|
||||
<br/>
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
Постфикс = "";
|
||||
Результат = OPI_WebSocket.ПолучитьНастройкиTls(Истина);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ПолучитьНастройкиTls", Постфикс);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
+19
-1
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 7
|
||||
sidebar_position: 9
|
||||
sidebar_class_name: doc-no-cli
|
||||
description: Это объект клиента и другие функции для работы с WebSocket в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, WebSocket]
|
||||
@@ -49,7 +49,25 @@ import Admonition from '@theme/Admonition';
|
||||
<br/>
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ЭтоОбъектКлиента(Соединение);
|
||||
Иначе
|
||||
Результат = OPI_WebSocket.ЭтоОбъектКлиента("not-a-client");
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ЭтоОбъектКлиента", Постфикс);
|
||||
|
||||
Результат = OPI_WebSocket.ЭтоОбъектКлиента("not-a-client");
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ЭтоОбъектКлиента", "Ложь, " + Постфикс);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
+21
-1
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
sidebar_position: 7
|
||||
|
||||
description: Отправить двоичное сообщение и другие функции для работы с WebSocket в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, WebSocket]
|
||||
@@ -47,7 +47,27 @@ import Admonition from '@theme/Admonition';
|
||||
<br/>
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
ИсходнаяСтрока = "binary-message-" + Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
|
||||
Данные = ПолучитьДвоичныеДанныеИзСтроки(ИсходнаяСтрока);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ОтправитьДвоичноеСообщение(Соединение, Данные);
|
||||
Проверка = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
Проверка = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОтправитьДвоичноеСообщение", Постфикс);
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Проверка , "WebSocket", "ОтправитьДвоичноеСообщение", "Проверка, " + Постфикс, ИсходнаяСтрока);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
|
||||
description: Отправить пинг и другие функции для работы с WebSocket в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, WebSocket]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
import Admonition from '@theme/Admonition';
|
||||
|
||||
# Отправить пинг
|
||||
Отправляет пинг удаленному серверу
|
||||
|
||||
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="params" label="Параметры" default>
|
||||
|
||||
`Функция ОтправитьПинг(Знач Соединение) Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| Соединение | --conn | Произвольный | ✔ | Соединение, См. [`ОткрытьСоединение`](/docs/WebSocket/Client-methods/Create-connection) |
|
||||
|
||||
|
||||
<div className="return-value-note">
|
||||
<div className="return-value-note__title">Возвращаемое значение</div>
|
||||
<div className="return-value-note__value">
|
||||
Соответствие Из КлючИЗначение - Результат выполнения
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="extended" label={<span>Расширенный вызов{' '}<a href="/docs/Start/Advanced-call" target="_blank" rel="noreferrer" title="Справка о расширенном вызове" onClick={(e) => e.stopPropagation()}>?</a></span>}>
|
||||
|
||||
*Для текущего метода нет дополнительных параметров расширенного вызова.*
|
||||
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ОтправитьПинг(Соединение);
|
||||
Проверка = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
Проверка = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОтправитьПинг", Постфикс);
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Проверка , "WebSocket", "ОтправитьПинг", "Проверка, " + Постфикс);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
|
||||
description: Отправить понг и другие функции для работы с WebSocket в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, WebSocket]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
import Admonition from '@theme/Admonition';
|
||||
|
||||
# Отправить понг
|
||||
Отправляет понг удаленному серверу
|
||||
|
||||
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="params" label="Параметры" default>
|
||||
|
||||
`Функция ОтправитьПонг(Знач Соединение) Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| Соединение | --conn | Произвольный | ✔ | Соединение, См. [`ОткрытьСоединение`](/docs/WebSocket/Client-methods/Create-connection) |
|
||||
|
||||
|
||||
<div className="return-value-note">
|
||||
<div className="return-value-note__title">Возвращаемое значение</div>
|
||||
<div className="return-value-note__value">
|
||||
Соответствие Из КлючИЗначение - Результат выполнения
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="extended" label={<span>Расширенный вызов{' '}<a href="/docs/Start/Advanced-call" target="_blank" rel="noreferrer" title="Справка о расширенном вызове" onClick={(e) => e.stopPropagation()}>?</a></span>}>
|
||||
|
||||
*Для текущего метода нет дополнительных параметров расширенного вызова.*
|
||||
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ОтправитьПонг(Соединение);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОтправитьПонг", Постфикс);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+20
-1
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
sidebar_position: 6
|
||||
|
||||
description: Отправить текстовое сообщение и другие функции для работы с WebSocket в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, WebSocket]
|
||||
@@ -43,7 +43,26 @@ import Admonition from '@theme/Admonition';
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
Постфикс = "";
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
Сообщение = "text-message-" + Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ОтправитьТекстовоеСообщение(Соединение, Сообщение);
|
||||
Проверка = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
Проверка = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОтправитьТекстовоеСообщение", Постфикс);
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Проверка , "WebSocket", "ОтправитьТекстовоеСообщение", "Проверка, " + Постфикс, Сообщение);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 8
|
||||
sidebar_position: 2
|
||||
sidebar_class_name: doc-no-cli
|
||||
description: Получить лог и другие функции для работы с WebSocket в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, WebSocket]
|
||||
@@ -21,7 +21,7 @@ import Admonition from '@theme/Admonition';
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| ОбъектСервера | - | Произвольный | ✔ | Объект компоненты запущенного сервера |
|
||||
| ОбъектСервера | - | Произвольный | ✔ | Объект компоненты сервера или клиента |
|
||||
| КакСтрока | - | Булево | ✖ | Истина > возвращает лог одной строкой, Ложь > как массив |
|
||||
| ЧислоСобытий | - | Число | ✖ | Число последних событий для получения. 0 > без ограничений |
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 9
|
||||
sidebar_position: 8
|
||||
sidebar_class_name: doc-no-cli
|
||||
description: Это объект сервера и другие функции для работы с WebSocket в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, WebSocket]
|
||||
|
||||
+10825
-10825
File diff suppressed because it is too large
Load Diff
@@ -1 +1 @@
|
||||
66C0E1541DEF92AD15A4861C5D49CD77457292F4348396608CA790C480727349
|
||||
C9C6784E6F6A8D8A56E9C9F5673721469DD3310F2A6E16E8833BBDF2514DC63B
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"reportPath": "./test_results/WebSocket.report",
|
||||
"closeAfterTests": true,
|
||||
"filter": {
|
||||
"extensions": null,
|
||||
"modules": null,
|
||||
"suites": null,
|
||||
"tags": null,
|
||||
"contexts": null,
|
||||
"paths": null,
|
||||
"tests": [
|
||||
"OPIt_WebSocket.WS_Client"
|
||||
]
|
||||
},
|
||||
"settings": {
|
||||
"ВТранзакции": false
|
||||
},
|
||||
"reportFormat": "dumpjson",
|
||||
"showReport": false,
|
||||
"logging": {
|
||||
"file": "",
|
||||
"console": false,
|
||||
"enable": null,
|
||||
"level": "info"
|
||||
},
|
||||
"exitCode": "./test_results/WebSocket.code",
|
||||
"ПодключатьВнешниеКомпоненты": true
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"reportPath": "./test_results/WebSocket.report",
|
||||
"closeAfterTests": true,
|
||||
"filter": {
|
||||
"extensions": null,
|
||||
"modules": null,
|
||||
"suites": null,
|
||||
"tags": null,
|
||||
"contexts": null,
|
||||
"paths": null,
|
||||
"tests": [
|
||||
"OPIt_WebSocket.WS_Клиент"
|
||||
]
|
||||
},
|
||||
"settings": {
|
||||
"ВТранзакции": false
|
||||
},
|
||||
"reportFormat": "dumpjson",
|
||||
"showReport": false,
|
||||
"logging": {
|
||||
"file": "",
|
||||
"console": false,
|
||||
"enable": null,
|
||||
"level": "info"
|
||||
},
|
||||
"exitCode": "./test_results/WebSocket.code",
|
||||
"ПодключатьВнешниеКомпоненты": true
|
||||
}
|
||||
@@ -93,33 +93,13 @@ Function FileTransferRequired() Export
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetLoggingSettings(Val WriteToMemory = True
|
||||
, Val MaxEvents = 300
|
||||
, Val FilePath = "") Export
|
||||
Function NotAddinParameterError() Export
|
||||
|
||||
OPI_TypeConversion.GetBoolean(WriteToMemory);
|
||||
OPI_TypeConversion.GetLine(FilePath);
|
||||
OPI_TypeConversion.GetNumber(MaxEvents);
|
||||
Result = New Map;
|
||||
Result.Insert("result", False);
|
||||
Result.Insert("error" , "The passed value is not an AddIn object");
|
||||
|
||||
SettingsStructure = New Structure;
|
||||
WriteToFile = ValueIsFilled(FilePath);
|
||||
|
||||
If WriteToMemory Then
|
||||
SettingsStructure.Insert("mode" , "memory");
|
||||
SettingsStructure.Insert("max_entries", MaxEvents);
|
||||
EndIf;
|
||||
|
||||
If WriteToFile Then
|
||||
SettingsStructure.Insert("mode" , "file");
|
||||
SettingsStructure.Insert("file_path", FilePath);
|
||||
EndIf;
|
||||
|
||||
If WriteToFile And WriteToMemory Then
|
||||
SettingsStructure.Insert("mode", "both");
|
||||
EndIf;
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Return SettingsStructure;
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
@@ -250,6 +230,60 @@ EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Logging
|
||||
|
||||
Function GetLoggingSettings(Val WriteToMemory = True
|
||||
, Val MaxEvents = 300
|
||||
, Val FilePath = "") Export
|
||||
|
||||
OPI_TypeConversion.GetBoolean(WriteToMemory);
|
||||
OPI_TypeConversion.GetLine(FilePath);
|
||||
OPI_TypeConversion.GetNumber(MaxEvents);
|
||||
|
||||
SettingsStructure = New Structure;
|
||||
WriteToFile = ValueIsFilled(FilePath);
|
||||
|
||||
If WriteToMemory Then
|
||||
SettingsStructure.Insert("mode" , "memory");
|
||||
SettingsStructure.Insert("max_entries", MaxEvents);
|
||||
EndIf;
|
||||
|
||||
If WriteToFile Then
|
||||
SettingsStructure.Insert("mode" , "file");
|
||||
SettingsStructure.Insert("file_path", FilePath);
|
||||
EndIf;
|
||||
|
||||
If WriteToFile And WriteToMemory Then
|
||||
SettingsStructure.Insert("mode", "both");
|
||||
EndIf;
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Return SettingsStructure;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetLog(Val ServerObject, Val AsString = False, Val EventCount = 100) Export
|
||||
|
||||
If Not IsAddIn(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetNumber(EventCount);
|
||||
OPI_TypeConversion.GetBoolean(AsString);
|
||||
|
||||
Result = ServerObject.GetLogs(EventCount);
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
If AsString And Result["result"] Then
|
||||
Result = StrConcat(Result["logs"], Chars.LF);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Private
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
Function GetHashSum() Export
|
||||
|
||||
LastBuildHash = "66C0E1541DEF92AD15A4861C5D49CD77457292F4348396608CA790C480727349";
|
||||
LastBuildHash = "C9C6784E6F6A8D8A56E9C9F5673721469DD3310F2A6E16E8833BBDF2514DC63B";
|
||||
|
||||
Return LastBuildHash;
|
||||
|
||||
|
||||
+8
-38
@@ -77,7 +77,7 @@ Function StopServer(Val Module, Val ServerObject) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
|
||||
Result = NotAddinParameterError();
|
||||
Result = OPI_AddIns.NotAddinParameterError();
|
||||
|
||||
Else
|
||||
|
||||
@@ -96,7 +96,7 @@ Function GetNextConnectionData(Val Module
|
||||
, Val MaxSize = 8192) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
Return OPI_AddIns.NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetNumber(Timeout);
|
||||
@@ -118,7 +118,7 @@ Function GetConnectionData(Val Module
|
||||
, Val MaxSize = 8192) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
Return OPI_AddIns.NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetNumber(Timeout);
|
||||
@@ -137,7 +137,7 @@ EndFunction
|
||||
Function SendData(Val Module, Val ServerObject, Val ConnectionID, Val Data) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
Return OPI_AddIns.NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetBinaryData(Data, True, False);
|
||||
@@ -153,7 +153,7 @@ EndFunction
|
||||
Function CloseIncomingConnection(Val Module, Val ServerObject, Val ConnectionID) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
Return OPI_AddIns.NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetLine(ConnectionID);
|
||||
@@ -168,7 +168,7 @@ EndFunction
|
||||
Function CompleteSend(Val Module, Val ServerObject, Val ConnectionID) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
Return OPI_AddIns.NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetLine(ConnectionID);
|
||||
@@ -183,7 +183,7 @@ EndFunction
|
||||
Function FinishReceiving(Val Module, Val ServerObject, Val ConnectionID) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
Return OPI_AddIns.NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetLine(ConnectionID);
|
||||
@@ -198,7 +198,7 @@ EndFunction
|
||||
Function GetConnectionList(Val Module, Val ServerObject) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
Return OPI_AddIns.NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
Result = ServerObject.GetConnectionsList();
|
||||
@@ -208,40 +208,10 @@ Function GetConnectionList(Val Module, Val ServerObject) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetLog(Val Module, Val ServerObject, Val AsString = False, Val EventCount = 100) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetNumber(EventCount);
|
||||
OPI_TypeConversion.GetBoolean(AsString);
|
||||
|
||||
Result = ServerObject.GetLogs(EventCount);
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
If AsString And Result["result"] Then
|
||||
Result = StrConcat(Result["logs"], Chars.LF);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Internal
|
||||
|
||||
Function NotAddinParameterError()
|
||||
|
||||
Result = New Map;
|
||||
Result.Insert("result", False);
|
||||
Result.Insert("error" , "The passed value is not a server object");
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Procedure CompleteMessageWithVaultData(Val ServerObject, MessageStructure)
|
||||
|
||||
DataKey = Undefined;
|
||||
|
||||
@@ -561,8 +561,7 @@ EndFunction
|
||||
// String, Map Of KeyAndValue - Log as a string or a map with the full execution result
|
||||
Function GetLog(Val ServerObject, Val AsString = False, Val EventCount = 100) Export
|
||||
|
||||
Return OPI_GenericServer.GetLog(OPI_TCP
|
||||
, ServerObject
|
||||
Return OPI_AddIns.GetLog(ServerObject
|
||||
, AsString
|
||||
, EventCount);
|
||||
|
||||
|
||||
@@ -72,6 +72,24 @@ Function GetLoggingSettings(Val WriteToMemory = True
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get log !NOCLI
|
||||
// Retrieves server log data (with logging to memory enabled)
|
||||
//
|
||||
// Parameters:
|
||||
// ServerObject - Arbitrary - Server or client component object - srv
|
||||
// AsString - Boolean - True > returns log as a single string, False > as an array - str
|
||||
// EventCount - Number - Number of recent events to retrieve. 0 > no limits - count
|
||||
//
|
||||
// Returns:
|
||||
// String, Map Of KeyAndValue - Log as a string or a map with the full execution result
|
||||
Function GetLog(Val ServerObject, Val AsString = False, Val EventCount = 100) Export
|
||||
|
||||
Return OPI_AddIns.GetLog(ServerObject
|
||||
, AsString
|
||||
, EventCount);
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region ClientMethods
|
||||
@@ -83,6 +101,7 @@ EndFunction
|
||||
// Address - String - Address and port - address
|
||||
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
|
||||
// Proxy - Structure Of KeyAndValue - Proxy settings, if required. See GetProxySettings - proxy
|
||||
// Headers - Map Of KeyAndValue - Map of additional HTTP headers for handshake - headers
|
||||
// Logging - Structure Of KeyAndValue - Logging settings. See GetLoggingSettings - log
|
||||
//
|
||||
// Returns:
|
||||
@@ -90,6 +109,7 @@ EndFunction
|
||||
Function CreateConnection(Val Address
|
||||
, Val Tls = Undefined
|
||||
, Val Proxy = Undefined
|
||||
, Val Headers = Undefined
|
||||
, Val Logging = Undefined) Export
|
||||
|
||||
OPI_TypeConversion.GetLine(Address);
|
||||
@@ -128,6 +148,20 @@ Function CreateConnection(Val Address
|
||||
|
||||
EndIf;
|
||||
|
||||
If ValueIsFilled(Headers) Then
|
||||
|
||||
ErrorText = "Incorrect header structure";
|
||||
OPI_TypeConversion.GetKeyValueCollection(Headers, ErrorText);
|
||||
|
||||
HeadersAsString = OPI_Tools.JSONString(Headers);
|
||||
Result = WSClient.SetHeaders(HeadersAsString);
|
||||
|
||||
If Not OPI_Tools.GetOr(Result, "result", False) Then
|
||||
Return Result;
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
|
||||
Result = WSClient.Connect(Address, SettingsString);
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
@@ -140,14 +174,19 @@ EndFunction
|
||||
//
|
||||
// Parameters:
|
||||
// Connection - Arbitrary - Connection, See CreateConnection - conn
|
||||
// Code - Number - Status code - code
|
||||
// Reason - String - Close message - reason
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue - Result of connection termination
|
||||
Function CloseConnection(Val Connection) Export
|
||||
Function CloseConnection(Val Connection, Val Code = 1000, Val Reason = "") Export
|
||||
|
||||
If IsClientObject(Connection) Then
|
||||
|
||||
Result = Connection.Disconnect();
|
||||
OPI_TypeConversion.GetNumber(Code);
|
||||
OPI_TypeConversion.GetLine(Reason);
|
||||
|
||||
Result = Connection.Close(Code, Reason);
|
||||
Result = OPI_Tools.JsonToStructure(Result, False);
|
||||
|
||||
Else
|
||||
@@ -161,6 +200,60 @@ Function CloseConnection(Val Connection) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
// Send ping
|
||||
// Sends a ping to the remote server
|
||||
//
|
||||
// Parameters:
|
||||
// Connection - Arbitrary - Connection, See CreateConnection - conn
|
||||
//
|
||||
// Returns:
|
||||
// Map Of KeyAndValue - Execution result
|
||||
Function SendPing(Val Connection) Export
|
||||
|
||||
If Not IsClientObject(Connection) Then
|
||||
|
||||
ErrorMap = New Map;
|
||||
ErrorMap.Insert("result", False);
|
||||
ErrorMap.Insert("error" , "Implicit connection opening is senseless in this case");
|
||||
|
||||
Return ErrorMap;
|
||||
|
||||
EndIf;
|
||||
|
||||
Result = Connection.SendPing();
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Send pong
|
||||
// Sends a pong to the remote server
|
||||
//
|
||||
// Parameters:
|
||||
// Connection - Arbitrary - Connection, See CreateConnection - conn
|
||||
//
|
||||
// Returns:
|
||||
// Map Of KeyAndValue - Execution result
|
||||
Function SendPong(Val Connection) Export
|
||||
|
||||
If Not IsClientObject(Connection) Then
|
||||
|
||||
ErrorMap = New Map;
|
||||
ErrorMap.Insert("result", False);
|
||||
ErrorMap.Insert("error" , "Implicit connection opening is senseless in this case");
|
||||
|
||||
Return ErrorMap;
|
||||
|
||||
EndIf;
|
||||
|
||||
Result = Connection.SendPong();
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get message
|
||||
// Receives an incoming message from the queue or waits for a new one
|
||||
//
|
||||
@@ -185,6 +278,17 @@ Function GetMessage(Val Connection, Val Timeout = 10000) Export
|
||||
OPI_TypeConversion.GetNumber(Timeout);
|
||||
|
||||
Result = Connection.ReceiveMessage(Timeout);
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
If OPI_Tools.GetOr(Result, "type", "") = "binary" Then
|
||||
|
||||
Data = OPI_Tools.GetOr(Result, "data", "");
|
||||
|
||||
If ValueIsFilled(Data) Then
|
||||
Result.Insert("data", OPI_AddIns.ReceiveData(Connection, Data));
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
@@ -408,25 +512,6 @@ Function GetConnectionList(Val ServerObject) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get log !NOCLI
|
||||
// Retrieves server log data (with logging to memory enabled)
|
||||
//
|
||||
// Parameters:
|
||||
// ServerObject - Arbitrary - Object of running server component - srv
|
||||
// AsString - Boolean - True > returns log as a single string, False > as an array - str
|
||||
// EventCount - Number - Number of recent events to retrieve. 0 > no limits - count
|
||||
//
|
||||
// Returns:
|
||||
// String, Map Of KeyAndValue - Log as a string or a map with the full execution result
|
||||
Function GetLog(Val ServerObject, Val AsString = False, Val EventCount = 100) Export
|
||||
|
||||
Return OPI_GenericServer.GetLog(OPI_WebSocket
|
||||
, ServerObject
|
||||
, AsString
|
||||
, EventCount);
|
||||
|
||||
EndFunction
|
||||
|
||||
// Is server object !NOCLI
|
||||
// Checks that the value is an object of the TCP server external component
|
||||
//
|
||||
|
||||
@@ -154,6 +154,7 @@ Function GetTestingSectionMapping() Export
|
||||
Sections.Insert("YandexMetrika" , 5);
|
||||
Sections.Insert("S3" , 5);
|
||||
Sections.Insert("TCP" , 5);
|
||||
Sections.Insert("WebSocket" , 5);
|
||||
Sections.Insert("GreenAPI" , 5);
|
||||
Sections.Insert("GreenMax" , 5);
|
||||
Sections.Insert("Ollama" , 5);
|
||||
@@ -189,6 +190,7 @@ Function GetTestTable(Val TestModule = "") Export
|
||||
Metrika = "YandexMetrika";
|
||||
S3_ = "S3";
|
||||
TCP = "TCP";
|
||||
WebSocket = "WebSocket";
|
||||
SQLite = "SQLite";
|
||||
Postgres = "PostgreSQL";
|
||||
MongoDB = "MongoDB";
|
||||
@@ -336,6 +338,7 @@ Function GetTestTable(Val TestModule = "") Export
|
||||
NewTest(TestTable, "AWS_BucketsManagement" , "Buckets management" , S3_);
|
||||
NewTest(TestTable, "AWS_ObjectsManagement" , "Objects management" , S3_);
|
||||
NewTest(TestTable, "TC_Client" , "TCP Client" , TCP);
|
||||
NewTest(TestTable, "WS_Client" , "WebSocket Client" , WebSocket);
|
||||
NewTest(TestTable, "TC_Server" , "TCP Host" , TCP);
|
||||
NewTest(TestTable, "SQLL_CommonMethods" , "Common methods" , SQLite);
|
||||
NewTest(TestTable, "SQLL_ORM" , "ORM" , SQLite);
|
||||
@@ -990,6 +993,85 @@ Function GetFTPParameterOptions() Export
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetWebSocketParametersOptions() Export
|
||||
|
||||
OptionArray = New Array;
|
||||
|
||||
TestParametersMain = New Structure;
|
||||
ParameterToCollection("WS_IP" , TestParametersMain);
|
||||
ParameterToCollection("WS_Port" , TestParametersMain);
|
||||
ParameterToCollection("WSS_IP" , TestParametersMain);
|
||||
ParameterToCollection("WSS_Port" , TestParametersMain);
|
||||
ParameterToCollection("Proxy_User" , TestParametersMain);
|
||||
ParameterToCollection("Proxy_Password", TestParametersMain);
|
||||
ParameterToCollection("Socks5_IP" , TestParametersMain);
|
||||
ParameterToCollection("Socks5_Port" , TestParametersMain);
|
||||
|
||||
Localhost = GetLocalhost();
|
||||
|
||||
Socks5IP = TestParametersMain["Socks5_IP"];
|
||||
TestParametersMain["Socks5_IP"] = ?(Socks5IP = "127.0.0.1", Localhost, Socks5IP);
|
||||
|
||||
// WS
|
||||
ParametersStructure = New Structure;
|
||||
ParametersStructure.Insert("Postfix", "WS");
|
||||
ParametersStructure.Insert("WS_IP", Localhost);
|
||||
ParametersStructure.Insert("WS_Port", TestParametersMain["WS_Port"]);
|
||||
ParametersStructure.Insert("Proxy_User", TestParametersMain["Proxy_User"]);
|
||||
ParametersStructure.Insert("Proxy_Password", TestParametersMain["Proxy_Password"]);
|
||||
ParametersStructure.Insert("Proxy_IP", TestParametersMain["Socks5_IP"]);
|
||||
ParametersStructure.Insert("Proxy_Port", TestParametersMain["Socks5_Port"]);
|
||||
ParametersStructure.Insert("Proxy_Type", "socks5");
|
||||
ParametersStructure.Insert("Proxy", False);
|
||||
ParametersStructure.Insert("TLS", False);
|
||||
OptionArray.Add(ParametersStructure);
|
||||
|
||||
// WSS
|
||||
ParametersStructure = New Structure;
|
||||
ParametersStructure.Insert("Postfix", "WSS");
|
||||
ParametersStructure.Insert("WS_IP", Localhost);
|
||||
ParametersStructure.Insert("WS_Port", TestParametersMain["WSS_Port"]);
|
||||
ParametersStructure.Insert("Proxy_User", TestParametersMain["Proxy_User"]);
|
||||
ParametersStructure.Insert("Proxy_Password", TestParametersMain["Proxy_Password"]);
|
||||
ParametersStructure.Insert("Proxy_IP", TestParametersMain["Socks5_IP"]);
|
||||
ParametersStructure.Insert("Proxy_Port", TestParametersMain["Socks5_Port"]);
|
||||
ParametersStructure.Insert("Proxy_Type", "socks5");
|
||||
ParametersStructure.Insert("Proxy", False);
|
||||
ParametersStructure.Insert("TLS", True);
|
||||
OptionArray.Add(ParametersStructure);
|
||||
|
||||
// WS + Socks5
|
||||
ParametersStructure = New Structure;
|
||||
ParametersStructure.Insert("Postfix", "WS, Socks5");
|
||||
ParametersStructure.Insert("WS_IP", TestParametersMain["WS_IP"]);
|
||||
ParametersStructure.Insert("WS_Port", TestParametersMain["WS_Port"]);
|
||||
ParametersStructure.Insert("Proxy_User", TestParametersMain["Proxy_User"]);
|
||||
ParametersStructure.Insert("Proxy_Password", TestParametersMain["Proxy_Password"]);
|
||||
ParametersStructure.Insert("Proxy_IP", TestParametersMain["Socks5_IP"]);
|
||||
ParametersStructure.Insert("Proxy_Port", TestParametersMain["Socks5_Port"]);
|
||||
ParametersStructure.Insert("Proxy_Type", "socks5");
|
||||
ParametersStructure.Insert("Proxy", True);
|
||||
ParametersStructure.Insert("TLS", False);
|
||||
OptionArray.Add(ParametersStructure);
|
||||
|
||||
// WSS + Socks5
|
||||
ParametersStructure = New Structure;
|
||||
ParametersStructure.Insert("Postfix", "WSS, Socks5");
|
||||
ParametersStructure.Insert("WS_IP", TestParametersMain["WSS_IP"]);
|
||||
ParametersStructure.Insert("WS_Port", TestParametersMain["WSS_Port"]);
|
||||
ParametersStructure.Insert("Proxy_User", TestParametersMain["Proxy_User"]);
|
||||
ParametersStructure.Insert("Proxy_Password", TestParametersMain["Proxy_Password"]);
|
||||
ParametersStructure.Insert("Proxy_IP", TestParametersMain["Socks5_IP"]);
|
||||
ParametersStructure.Insert("Proxy_Port", TestParametersMain["Socks5_Port"]);
|
||||
ParametersStructure.Insert("Proxy_Type", "socks5");
|
||||
ParametersStructure.Insert("Proxy", True);
|
||||
ParametersStructure.Insert("TLS", True);
|
||||
OptionArray.Add(ParametersStructure);
|
||||
|
||||
Return OptionArray;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetSSHParameterOptions() Export
|
||||
|
||||
OptionArray = New Array;
|
||||
@@ -7694,6 +7776,109 @@ Function Check_TCP_IsServerObject(Val Result, Val Option)
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_CreateConnection(Val Result, Val Option)
|
||||
|
||||
Result = String(TypeOf(Result));
|
||||
ExpectsThat(Result).Равно("AddIn.OPI_WSClient.Main");
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_CloseConnection(Val Result, Val Option)
|
||||
|
||||
If Left(Option, 8) = "Openning" Then
|
||||
Result = String(TypeOf(Result));
|
||||
ExpectsThat(Result).Равно("AddIn.OPI_WSClient.Main");
|
||||
Else
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_SendPing(Val Result, Val Option)
|
||||
|
||||
If Left(Option, 8) = "Check" Then
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["type"]).Равно("pong");
|
||||
Else
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_SendPong(Val Result, Val Option)
|
||||
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_GetMessage(Val Result, Val Option, Message = "")
|
||||
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["type"]).Равно("text");
|
||||
ExpectsThat(Result["data"]).Равно(Message);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_SendTextMessage(Val Result, Val Option, Message = "")
|
||||
|
||||
If Left(Option, 8) = "Check" Then
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["type"]).Равно("text");
|
||||
ExpectsThat(Result["data"]).Равно(Message);
|
||||
Else
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_SendBinaryMessage(Val Result, Val Option, Message = "")
|
||||
|
||||
If Left(Option, 8) = "Check" Then
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["type"]).Равно("binary");
|
||||
Data = GetStringFromBinaryData(Result["data"]);
|
||||
ExpectsThat(Data).Равно(Message);
|
||||
Result["data"] = "<BinaryData>";
|
||||
Else
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_GetTlsSettings(Val Result, Val Option)
|
||||
|
||||
ExpectsThat(OPI_Tools.ThisIsCollection(Result, True)).Равно(True);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_IsClientObject(Val Result, Val Option)
|
||||
|
||||
If Left(Option, 4) = "False" Then
|
||||
ExpectsThat(Result).Равно(False);
|
||||
Else
|
||||
ExpectsThat(Result).Равно(True);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_SQLite_CreateConnection(Val Result, Val Option)
|
||||
|
||||
If Option = "Closing" Then
|
||||
|
||||
@@ -85,3 +85,256 @@ Function ПолучитьСписокТестов(UnitTesting) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
#Region Internal
|
||||
|
||||
#Region RunnableTests
|
||||
|
||||
#Region WebSocket
|
||||
|
||||
Procedure WS_Client() Export
|
||||
|
||||
OptionArray = OPI_TestDataRetrieval.GetWebSocketParametersOptions();
|
||||
|
||||
For Each TestParameters In OptionArray Do
|
||||
|
||||
WebSocket_CreateConnection(TestParameters);
|
||||
WebSocket_CloseConnection(TestParameters);
|
||||
WebSocket_SendPing(TestParameters);
|
||||
WebSocket_SendPong(TestParameters);
|
||||
WebSocket_GetMessage(TestParameters);
|
||||
WebSocket_SendTextMessage(TestParameters);
|
||||
WebSocket_SendBinaryMessage(TestParameters);
|
||||
WebSocket_GetTlsSettings(TestParameters);
|
||||
WebSocket_IsClientObject(TestParameters);
|
||||
|
||||
EndDo;
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion // WebSocket
|
||||
|
||||
#EndRegion // RunnableTests
|
||||
|
||||
#EndRegion // Internal
|
||||
|
||||
#Region Private
|
||||
|
||||
#Region AtomicTests
|
||||
|
||||
#Region WebSocket
|
||||
|
||||
Procedure WebSocket_CreateConnection(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
OPI_TestDataRetrieval.Process(Connection, "WebSocket", "CreateConnection", Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_CloseConnection(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
OPI_TestDataRetrieval.Process(Connection, "WebSocket", "CloseConnection", "Openning, " + Postfix); // SKIP
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.CloseConnection(Connection);
|
||||
Else
|
||||
Result = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "CloseConnection", Postfix);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendPing(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.SendPing(Connection);
|
||||
Check = OPI_WebSocket.GetMessage(Connection, 3000);
|
||||
Else
|
||||
Result = Connection;
|
||||
Check = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendPing", Postfix);
|
||||
OPI_TestDataRetrieval.Process(Check , "WebSocket", "SendPing", "Check, " + Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendPong(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.SendPong(Connection);
|
||||
Else
|
||||
Result = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendPong", Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_GetMessage(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
Message = "echo-text-" + Format(CurrentDate(), "DF=yyyyMMddhhmmss");
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Sending = OPI_WebSocket.SendTextMessage(Connection, Message); // SKIP
|
||||
OPI_TestDataRetrieval.Process(Sending, "WebSocket", "GetMessage", "Sending, " + Postfix); // SKIP
|
||||
Result = OPI_WebSocket.GetMessage(Connection, 3000);
|
||||
Else
|
||||
Result = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "GetMessage", Postfix, Message);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendTextMessage(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
Message = "text-message-" + Format(CurrentDate(), "DF=yyyyMMddhhmmss");
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.SendTextMessage(Connection, Message);
|
||||
Check = OPI_WebSocket.GetMessage(Connection, 3000);
|
||||
Else
|
||||
Result = Connection;
|
||||
Check = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendTextMessage", Postfix);
|
||||
OPI_TestDataRetrieval.Process(Check , "WebSocket", "SendTextMessage", "Check, " + Postfix, Message);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendBinaryMessage(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
SourceString = "binary-message-" + Format(CurrentDate(), "DF=yyyyMMddhhmmss");
|
||||
Data = GetBinaryDataFromString(SourceString);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.SendBinaryMessage(Connection, Data);
|
||||
Check = OPI_WebSocket.GetMessage(Connection, 3000);
|
||||
Else
|
||||
Result = Connection;
|
||||
Check = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendBinaryMessage", Postfix);
|
||||
OPI_TestDataRetrieval.Process(Check , "WebSocket", "SendBinaryMessage", "Check, " + Postfix, SourceString);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_GetTlsSettings(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Result = OPI_WebSocket.GetTlsSettings(True);
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "GetTlsSettings", Postfix);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_IsClientObject(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.IsClientObject(Connection);
|
||||
Else
|
||||
Result = OPI_WebSocket.IsClientObject("not-a-client");
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "IsClientObject", Postfix);
|
||||
|
||||
Result = OPI_WebSocket.IsClientObject("not-a-client");
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "IsClientObject", "False, " + Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion // WebSocket
|
||||
|
||||
#EndRegion // AtomicTests
|
||||
|
||||
#Region AdditionalFunctions
|
||||
|
||||
Function CreateWebSocketClient(FunctionParameters)
|
||||
|
||||
Address = GetWebSocketAddress(FunctionParameters);
|
||||
|
||||
TLSSettings = Undefined;
|
||||
ProxySettings = Undefined;
|
||||
Headers = New Structure("X-Trace-Id", "OPI-WS-TEST");
|
||||
|
||||
If FunctionParameters["TLS"] Then
|
||||
TLSSettings = OPI_WebSocket.GetTlsSettings(True);
|
||||
EndIf;
|
||||
|
||||
If FunctionParameters["Proxy"] Then
|
||||
ProxySettings = OPI_AddIns.GetProxySettings(
|
||||
FunctionParameters["Proxy_IP"],
|
||||
FunctionParameters["Proxy_Port"],
|
||||
FunctionParameters["Proxy_Type"],
|
||||
FunctionParameters["Proxy_User"],
|
||||
FunctionParameters["Proxy_Password"]);
|
||||
EndIf;
|
||||
|
||||
Return OPI_WebSocket.CreateConnection(Address, TLSSettings, ProxySettings, , Headers);
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetWebSocketAddress(FunctionParameters)
|
||||
|
||||
Scheme = ?(FunctionParameters["TLS"], "wss://", "ws://");
|
||||
Host = FunctionParameters["WS_IP"];
|
||||
Port = FunctionParameters["WS_Port"];
|
||||
|
||||
Return StrTemplate("%1%2:%3", Scheme, Host, Port);
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion // AdditionalFunctions
|
||||
|
||||
#EndRegion // Private
|
||||
|
||||
+286
-1
@@ -87,9 +87,294 @@ Function ПолучитьСписокТестов(UnitTesting) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
#Region Internal
|
||||
|
||||
#Region RunnableTests
|
||||
|
||||
#Region WebSocket
|
||||
|
||||
Procedure WS_Client() Export
|
||||
|
||||
OptionArray = OPI_TestDataRetrieval.GetWebSocketParametersOptions();
|
||||
|
||||
For Each TestParameters In OptionArray Do
|
||||
|
||||
WebSocket_CreateConnection(TestParameters);
|
||||
WebSocket_CloseConnection(TestParameters);
|
||||
WebSocket_SendPing(TestParameters);
|
||||
WebSocket_SendPong(TestParameters);
|
||||
WebSocket_GetMessage(TestParameters);
|
||||
WebSocket_SendTextMessage(TestParameters);
|
||||
WebSocket_SendBinaryMessage(TestParameters);
|
||||
WebSocket_GetTlsSettings(TestParameters);
|
||||
WebSocket_IsClientObject(TestParameters);
|
||||
|
||||
EndDo;
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion // WebSocket
|
||||
|
||||
#EndRegion // RunnableTests
|
||||
|
||||
#EndRegion // Internal
|
||||
|
||||
#Region Private
|
||||
|
||||
#Region AtomicTests
|
||||
|
||||
#Region WebSocket
|
||||
|
||||
Procedure WebSocket_CreateConnection(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
OPI_TestDataRetrieval.Process(Connection, "WebSocket", "CreateConnection", Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_CloseConnection(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
OPI_TestDataRetrieval.Process(Connection, "WebSocket", "CloseConnection", "Openning, " + Postfix); // SKIP
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.CloseConnection(Connection);
|
||||
Else
|
||||
Result = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "CloseConnection", Postfix);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendPing(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "SendPing", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("tout", 3000);
|
||||
|
||||
Check = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "GetMessage", Options);
|
||||
Else
|
||||
Result = Connection;
|
||||
Check = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendPing", Postfix);
|
||||
OPI_TestDataRetrieval.Process(Check , "WebSocket", "SendPing", "Check, " + Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendPong(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "SendPong", Options);
|
||||
Else
|
||||
Result = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendPong", Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_GetMessage(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
Message = "echo-text-" + Format(CurrentDate(), "DF=yyyyMMddhhmmss");
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Sending = OPI_WebSocket.SendTextMessage(Connection, Message); // SKIP
|
||||
OPI_TestDataRetrieval.Process(Sending, "WebSocket", "GetMessage", "Sending, " + Postfix); // SKIP
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("tout", 3000);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "GetMessage", Options);
|
||||
Else
|
||||
Result = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "GetMessage", Postfix, Message);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendTextMessage(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
Message = "text-message-" + Format(CurrentDate(), "DF=yyyyMMddhhmmss");
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("text", Message);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "SendTextMessage", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("tout", 3000);
|
||||
|
||||
Check = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "GetMessage", Options);
|
||||
Else
|
||||
Result = Connection;
|
||||
Check = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendTextMessage", Postfix);
|
||||
OPI_TestDataRetrieval.Process(Check , "WebSocket", "SendTextMessage", "Check, " + Postfix, Message);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendBinaryMessage(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
SourceString = "binary-message-" + Format(CurrentDate(), "DF=yyyyMMddhhmmss");
|
||||
Data = GetBinaryDataFromString(SourceString);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("data", Data);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "SendBinaryMessage", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("tout", 3000);
|
||||
|
||||
Check = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "GetMessage", Options);
|
||||
Else
|
||||
Result = Connection;
|
||||
Check = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendBinaryMessage", Postfix);
|
||||
OPI_TestDataRetrieval.Process(Check , "WebSocket", "SendBinaryMessage", "Check, " + Postfix, SourceString);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_GetTlsSettings(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Result = OPI_WebSocket.GetTlsSettings(True);
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "GetTlsSettings", Postfix);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_IsClientObject(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.IsClientObject(Connection);
|
||||
Else
|
||||
Result = OPI_WebSocket.IsClientObject("not-a-client");
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "IsClientObject", Postfix);
|
||||
|
||||
Result = OPI_WebSocket.IsClientObject("not-a-client");
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "IsClientObject", "False, " + Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion // WebSocket
|
||||
|
||||
#EndRegion // AtomicTests
|
||||
|
||||
#Region AdditionalFunctions
|
||||
|
||||
Function CreateWebSocketClient(FunctionParameters)
|
||||
|
||||
Address = GetWebSocketAddress(FunctionParameters);
|
||||
|
||||
TLSSettings = Undefined;
|
||||
ProxySettings = Undefined;
|
||||
Headers = New Structure("X-Trace-Id", "OPI-WS-TEST");
|
||||
|
||||
If FunctionParameters["TLS"] Then
|
||||
TLSSettings = OPI_WebSocket.GetTlsSettings(True);
|
||||
EndIf;
|
||||
|
||||
If FunctionParameters["Proxy"] Then
|
||||
ProxySettings = OPI_AddIns.GetProxySettings(
|
||||
FunctionParameters["Proxy_IP"],
|
||||
FunctionParameters["Proxy_Port"],
|
||||
FunctionParameters["Proxy_Type"],
|
||||
FunctionParameters["Proxy_User"],
|
||||
FunctionParameters["Proxy_Password"]);
|
||||
EndIf;
|
||||
|
||||
Return OPI_WebSocket.CreateConnection(Address, TLSSettings, ProxySettings, , Headers);
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetWebSocketAddress(FunctionParameters)
|
||||
|
||||
Scheme = ?(FunctionParameters["TLS"], "wss://", "ws://");
|
||||
Host = FunctionParameters["WS_IP"];
|
||||
Port = FunctionParameters["WS_Port"];
|
||||
|
||||
Return StrTemplate("%1%2:%3", Scheme, Host, Port);
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion // AdditionalFunctions
|
||||
|
||||
#EndRegion // Private
|
||||
|
||||
#Region Alternate
|
||||
|
||||
|
||||
Procedure WS_Клиент() Export
|
||||
WS_Client();
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
66C0E1541DEF92AD15A4861C5D49CD77457292F4348396608CA790C480727349
|
||||
C9C6784E6F6A8D8A56E9C9F5673721469DD3310F2A6E16E8833BBDF2514DC63B
|
||||
+1
-2
@@ -561,8 +561,7 @@ EndFunction
|
||||
// String, Map Of KeyAndValue - Log as a string or a map with the full execution result
|
||||
Function GetLog(Val ServerObject, Val AsString = False, Val EventCount = 100) Export
|
||||
|
||||
Return OPI_GenericServer.GetLog(OPI_TCP
|
||||
, ServerObject
|
||||
Return OPI_AddIns.GetLog(ServerObject
|
||||
, AsString
|
||||
, EventCount);
|
||||
|
||||
|
||||
+122
-29
@@ -72,6 +72,24 @@ Function GetLoggingSettings(Val WriteToMemory = True
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get log !NOCLI
|
||||
// Retrieves server log data (with logging to memory enabled)
|
||||
//
|
||||
// Parameters:
|
||||
// ServerObject - Arbitrary - Server or client component object - srv
|
||||
// AsString - Boolean - True > returns log as a single string, False > as an array - str
|
||||
// EventCount - Number - Number of recent events to retrieve. 0 > no limits - count
|
||||
//
|
||||
// Returns:
|
||||
// String, Map Of KeyAndValue - Log as a string or a map with the full execution result
|
||||
Function GetLog(Val ServerObject, Val AsString = False, Val EventCount = 100) Export
|
||||
|
||||
Return OPI_AddIns.GetLog(ServerObject
|
||||
, AsString
|
||||
, EventCount);
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region ClientMethods
|
||||
@@ -83,6 +101,7 @@ EndFunction
|
||||
// Address - String - Address and port - address
|
||||
// Tls - Structure Of KeyAndValue - TLS settings, if necessary. See GetTlsSettings - tls
|
||||
// Proxy - Structure Of KeyAndValue - Proxy settings, if required. See GetProxySettings - proxy
|
||||
// Headers - Map Of KeyAndValue - Map of additional HTTP headers for handshake - headers
|
||||
// Logging - Structure Of KeyAndValue - Logging settings. See GetLoggingSettings - log
|
||||
//
|
||||
// Returns:
|
||||
@@ -90,6 +109,7 @@ EndFunction
|
||||
Function CreateConnection(Val Address
|
||||
, Val Tls = Undefined
|
||||
, Val Proxy = Undefined
|
||||
, Val Headers = Undefined
|
||||
, Val Logging = Undefined) Export
|
||||
|
||||
OPI_TypeConversion.GetLine(Address);
|
||||
@@ -128,6 +148,20 @@ Function CreateConnection(Val Address
|
||||
|
||||
EndIf;
|
||||
|
||||
If ValueIsFilled(Headers) Then
|
||||
|
||||
ErrorText = "Incorrect header structure";
|
||||
OPI_TypeConversion.GetKeyValueCollection(Headers, ErrorText);
|
||||
|
||||
HeadersAsString = OPI_Tools.JSONString(Headers);
|
||||
Result = WSClient.SetHeaders(HeadersAsString);
|
||||
|
||||
If Not OPI_Tools.GetOr(Result, "result", False) Then
|
||||
Return Result;
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
|
||||
Result = WSClient.Connect(Address, SettingsString);
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
@@ -140,14 +174,19 @@ EndFunction
|
||||
//
|
||||
// Parameters:
|
||||
// Connection - Arbitrary - Connection, See CreateConnection - conn
|
||||
// Code - Number - Status code - code
|
||||
// Reason - String - Close message - reason
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue - Result of connection termination
|
||||
Function CloseConnection(Val Connection) Export
|
||||
Function CloseConnection(Val Connection, Val Code = 1000, Val Reason = "") Export
|
||||
|
||||
If IsClientObject(Connection) Then
|
||||
|
||||
Result = Connection.Disconnect();
|
||||
OPI_TypeConversion.GetNumber(Code);
|
||||
OPI_TypeConversion.GetLine(Reason);
|
||||
|
||||
Result = Connection.Close(Code, Reason);
|
||||
Result = OPI_Tools.JsonToStructure(Result, False);
|
||||
|
||||
Else
|
||||
@@ -161,6 +200,60 @@ Function CloseConnection(Val Connection) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
// Send ping
|
||||
// Sends a ping to the remote server
|
||||
//
|
||||
// Parameters:
|
||||
// Connection - Arbitrary - Connection, See CreateConnection - conn
|
||||
//
|
||||
// Returns:
|
||||
// Map Of KeyAndValue - Execution result
|
||||
Function SendPing(Val Connection) Export
|
||||
|
||||
If Not IsClientObject(Connection) Then
|
||||
|
||||
ErrorMap = New Map;
|
||||
ErrorMap.Insert("result", False);
|
||||
ErrorMap.Insert("error" , "Implicit connection opening is senseless in this case");
|
||||
|
||||
Return ErrorMap;
|
||||
|
||||
EndIf;
|
||||
|
||||
Result = Connection.SendPing();
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Send pong
|
||||
// Sends a pong to the remote server
|
||||
//
|
||||
// Parameters:
|
||||
// Connection - Arbitrary - Connection, See CreateConnection - conn
|
||||
//
|
||||
// Returns:
|
||||
// Map Of KeyAndValue - Execution result
|
||||
Function SendPong(Val Connection) Export
|
||||
|
||||
If Not IsClientObject(Connection) Then
|
||||
|
||||
ErrorMap = New Map;
|
||||
ErrorMap.Insert("result", False);
|
||||
ErrorMap.Insert("error" , "Implicit connection opening is senseless in this case");
|
||||
|
||||
Return ErrorMap;
|
||||
|
||||
EndIf;
|
||||
|
||||
Result = Connection.SendPong();
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get message
|
||||
// Receives an incoming message from the queue or waits for a new one
|
||||
//
|
||||
@@ -185,6 +278,17 @@ Function GetMessage(Val Connection, Val Timeout = 10000) Export
|
||||
OPI_TypeConversion.GetNumber(Timeout);
|
||||
|
||||
Result = Connection.ReceiveMessage(Timeout);
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
If OPI_Tools.GetOr(Result, "type", "") = "binary" Then
|
||||
|
||||
Data = OPI_Tools.GetOr(Result, "data", "");
|
||||
|
||||
If ValueIsFilled(Data) Then
|
||||
Result.Insert("data", OPI_AddIns.ReceiveData(Connection, Data));
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
@@ -408,25 +512,6 @@ Function GetConnectionList(Val ServerObject) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get log !NOCLI
|
||||
// Retrieves server log data (with logging to memory enabled)
|
||||
//
|
||||
// Parameters:
|
||||
// ServerObject - Arbitrary - Object of running server component - srv
|
||||
// AsString - Boolean - True > returns log as a single string, False > as an array - str
|
||||
// EventCount - Number - Number of recent events to retrieve. 0 > no limits - count
|
||||
//
|
||||
// Returns:
|
||||
// String, Map Of KeyAndValue - Log as a string or a map with the full execution result
|
||||
Function GetLog(Val ServerObject, Val AsString = False, Val EventCount = 100) Export
|
||||
|
||||
Return OPI_GenericServer.GetLog(OPI_WebSocket
|
||||
, ServerObject
|
||||
, AsString
|
||||
, EventCount);
|
||||
|
||||
EndFunction
|
||||
|
||||
// Is server object !NOCLI
|
||||
// Checks that the value is an object of the TCP server external component
|
||||
//
|
||||
@@ -462,12 +547,24 @@ Function ПолучитьНастройкиЛогирования(Val Запис
|
||||
Return GetLoggingSettings(ЗаписьВПамять, МаксимумСобытий, ПутьКФайлу);
|
||||
EndFunction
|
||||
|
||||
Function ОткрытьСоединение(Val Адрес, Val Tls = Undefined, Val Прокси = Undefined, Val Логирование = Undefined) Export
|
||||
Return CreateConnection(Адрес, Tls, Прокси, Логирование);
|
||||
Function ПолучитьЛог(Val ОбъектСервера, Val КакСтрока = False, Val ЧислоСобытий = 100) Export
|
||||
Return GetLog(ОбъектСервера, КакСтрока, ЧислоСобытий);
|
||||
EndFunction
|
||||
|
||||
Function ЗакрытьСоединение(Val Соединение) Export
|
||||
Return CloseConnection(Соединение);
|
||||
Function ОткрытьСоединение(Val Адрес, Val Tls = Undefined, Val Прокси = Undefined, Val Заголовки = Undefined, Val Логирование = Undefined) Export
|
||||
Return CreateConnection(Адрес, Tls, Прокси, Заголовки, Логирование);
|
||||
EndFunction
|
||||
|
||||
Function ЗакрытьСоединение(Val Соединение, Val Код = 1000, Val Причина = "") Export
|
||||
Return CloseConnection(Соединение, Код, Причина);
|
||||
EndFunction
|
||||
|
||||
Function ОтправитьПинг(Val Соединение) Export
|
||||
Return SendPing(Соединение);
|
||||
EndFunction
|
||||
|
||||
Function ОтправитьПонг(Val Соединение) Export
|
||||
Return SendPong(Соединение);
|
||||
EndFunction
|
||||
|
||||
Function ПолучитьСообщение(Val Соединение, Val Таймаут = 10000) Export
|
||||
@@ -518,10 +615,6 @@ Function ПолучитьСписокСоединений(Val ОбъектСер
|
||||
Return GetConnectionList(ОбъектСервера);
|
||||
EndFunction
|
||||
|
||||
Function ПолучитьЛог(Val ОбъектСервера, Val КакСтрока = False, Val ЧислоСобытий = 100) Export
|
||||
Return GetLog(ОбъектСервера, КакСтрока, ЧислоСобытий);
|
||||
EndFunction
|
||||
|
||||
Function ЭтоОбъектСервера(Val Значение) Export
|
||||
Return IsServerObject(Значение);
|
||||
EndFunction
|
||||
|
||||
+256
-1
@@ -85,9 +85,264 @@ Function ПолучитьСписокТестов(UnitTesting) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
#Region Internal
|
||||
|
||||
#Region RunnableTests
|
||||
|
||||
#Region WebSocket
|
||||
|
||||
Procedure WS_Client() Export
|
||||
|
||||
OptionArray = OPI_TestDataRetrieval.GetWebSocketParametersOptions();
|
||||
|
||||
For Each TestParameters In OptionArray Do
|
||||
|
||||
WebSocket_CreateConnection(TestParameters);
|
||||
WebSocket_CloseConnection(TestParameters);
|
||||
WebSocket_SendPing(TestParameters);
|
||||
WebSocket_SendPong(TestParameters);
|
||||
WebSocket_GetMessage(TestParameters);
|
||||
WebSocket_SendTextMessage(TestParameters);
|
||||
WebSocket_SendBinaryMessage(TestParameters);
|
||||
WebSocket_GetTlsSettings(TestParameters);
|
||||
WebSocket_IsClientObject(TestParameters);
|
||||
|
||||
EndDo;
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion // WebSocket
|
||||
|
||||
#EndRegion // RunnableTests
|
||||
|
||||
#EndRegion // Internal
|
||||
|
||||
#Region Private
|
||||
|
||||
#Region AtomicTests
|
||||
|
||||
#Region WebSocket
|
||||
|
||||
Procedure WebSocket_CreateConnection(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
OPI_TestDataRetrieval.Process(Connection, "WebSocket", "CreateConnection", Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_CloseConnection(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
OPI_TestDataRetrieval.Process(Connection, "WebSocket", "CloseConnection", "Openning, " + Postfix); // SKIP
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.CloseConnection(Connection);
|
||||
Else
|
||||
Result = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "CloseConnection", Postfix);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendPing(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.SendPing(Connection);
|
||||
Check = OPI_WebSocket.GetMessage(Connection, 3000);
|
||||
Else
|
||||
Result = Connection;
|
||||
Check = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendPing", Postfix);
|
||||
OPI_TestDataRetrieval.Process(Check , "WebSocket", "SendPing", "Check, " + Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendPong(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.SendPong(Connection);
|
||||
Else
|
||||
Result = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendPong", Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_GetMessage(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
Message = "echo-text-" + Format(CurrentDate(), "DF=yyyyMMddhhmmss");
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Sending = OPI_WebSocket.SendTextMessage(Connection, Message); // SKIP
|
||||
OPI_TestDataRetrieval.Process(Sending, "WebSocket", "GetMessage", "Sending, " + Postfix); // SKIP
|
||||
Result = OPI_WebSocket.GetMessage(Connection, 3000);
|
||||
Else
|
||||
Result = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "GetMessage", Postfix, Message);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendTextMessage(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
Message = "text-message-" + Format(CurrentDate(), "DF=yyyyMMddhhmmss");
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.SendTextMessage(Connection, Message);
|
||||
Check = OPI_WebSocket.GetMessage(Connection, 3000);
|
||||
Else
|
||||
Result = Connection;
|
||||
Check = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendTextMessage", Postfix);
|
||||
OPI_TestDataRetrieval.Process(Check , "WebSocket", "SendTextMessage", "Check, " + Postfix, Message);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendBinaryMessage(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
SourceString = "binary-message-" + Format(CurrentDate(), "DF=yyyyMMddhhmmss");
|
||||
Data = GetBinaryDataFromString(SourceString);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.SendBinaryMessage(Connection, Data);
|
||||
Check = OPI_WebSocket.GetMessage(Connection, 3000);
|
||||
Else
|
||||
Result = Connection;
|
||||
Check = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendBinaryMessage", Postfix);
|
||||
OPI_TestDataRetrieval.Process(Check , "WebSocket", "SendBinaryMessage", "Check, " + Postfix, SourceString);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_GetTlsSettings(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Result = OPI_WebSocket.GetTlsSettings(True);
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "GetTlsSettings", Postfix);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_IsClientObject(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.IsClientObject(Connection);
|
||||
Else
|
||||
Result = OPI_WebSocket.IsClientObject("not-a-client");
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "IsClientObject", Postfix);
|
||||
|
||||
Result = OPI_WebSocket.IsClientObject("not-a-client");
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "IsClientObject", "False, " + Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion // WebSocket
|
||||
|
||||
#EndRegion // AtomicTests
|
||||
|
||||
#Region AdditionalFunctions
|
||||
|
||||
Function CreateWebSocketClient(FunctionParameters)
|
||||
|
||||
Address = GetWebSocketAddress(FunctionParameters);
|
||||
|
||||
TLSSettings = Undefined;
|
||||
ProxySettings = Undefined;
|
||||
Headers = New Structure("X-Trace-Id", "OPI-WS-TEST");
|
||||
|
||||
If FunctionParameters["TLS"] Then
|
||||
TLSSettings = OPI_WebSocket.GetTlsSettings(True);
|
||||
EndIf;
|
||||
|
||||
If FunctionParameters["Proxy"] Then
|
||||
ProxySettings = OPI_AddIns.GetProxySettings(
|
||||
FunctionParameters["Proxy_IP"],
|
||||
FunctionParameters["Proxy_Port"],
|
||||
FunctionParameters["Proxy_Type"],
|
||||
FunctionParameters["Proxy_User"],
|
||||
FunctionParameters["Proxy_Password"]);
|
||||
EndIf;
|
||||
|
||||
Return OPI_WebSocket.CreateConnection(Address, TLSSettings, ProxySettings, , Headers);
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetWebSocketAddress(FunctionParameters)
|
||||
|
||||
Scheme = ?(FunctionParameters["TLS"], "wss://", "ws://");
|
||||
Host = FunctionParameters["WS_IP"];
|
||||
Port = FunctionParameters["WS_Port"];
|
||||
|
||||
Return StrTemplate("%1%2:%3", Scheme, Host, Port);
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion // AdditionalFunctions
|
||||
|
||||
#EndRegion // Private
|
||||
|
||||
#Region Alternate
|
||||
|
||||
|
||||
Procedure WS_Клиент() Export
|
||||
WS_Client();
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
+286
-1
@@ -87,9 +87,294 @@ Function ПолучитьСписокТестов(UnitTesting) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
#Region Internal
|
||||
|
||||
#Region RunnableTests
|
||||
|
||||
#Region WebSocket
|
||||
|
||||
Procedure WS_Client() Export
|
||||
|
||||
OptionArray = OPI_TestDataRetrieval.GetWebSocketParametersOptions();
|
||||
|
||||
For Each TestParameters In OptionArray Do
|
||||
|
||||
WebSocket_CreateConnection(TestParameters);
|
||||
WebSocket_CloseConnection(TestParameters);
|
||||
WebSocket_SendPing(TestParameters);
|
||||
WebSocket_SendPong(TestParameters);
|
||||
WebSocket_GetMessage(TestParameters);
|
||||
WebSocket_SendTextMessage(TestParameters);
|
||||
WebSocket_SendBinaryMessage(TestParameters);
|
||||
WebSocket_GetTlsSettings(TestParameters);
|
||||
WebSocket_IsClientObject(TestParameters);
|
||||
|
||||
EndDo;
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion // WebSocket
|
||||
|
||||
#EndRegion // RunnableTests
|
||||
|
||||
#EndRegion // Internal
|
||||
|
||||
#Region Private
|
||||
|
||||
#Region AtomicTests
|
||||
|
||||
#Region WebSocket
|
||||
|
||||
Procedure WebSocket_CreateConnection(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
OPI_TestDataRetrieval.Process(Connection, "WebSocket", "CreateConnection", Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_CloseConnection(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
OPI_TestDataRetrieval.Process(Connection, "WebSocket", "CloseConnection", "Openning, " + Postfix); // SKIP
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.CloseConnection(Connection);
|
||||
Else
|
||||
Result = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "CloseConnection", Postfix);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendPing(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "SendPing", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("tout", 3000);
|
||||
|
||||
Check = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "GetMessage", Options);
|
||||
Else
|
||||
Result = Connection;
|
||||
Check = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendPing", Postfix);
|
||||
OPI_TestDataRetrieval.Process(Check , "WebSocket", "SendPing", "Check, " + Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendPong(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "SendPong", Options);
|
||||
Else
|
||||
Result = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendPong", Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_GetMessage(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
Message = "echo-text-" + Format(CurrentDate(), "DF=yyyyMMddhhmmss");
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Sending = OPI_WebSocket.SendTextMessage(Connection, Message); // SKIP
|
||||
OPI_TestDataRetrieval.Process(Sending, "WebSocket", "GetMessage", "Sending, " + Postfix); // SKIP
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("tout", 3000);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "GetMessage", Options);
|
||||
Else
|
||||
Result = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "GetMessage", Postfix, Message);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendTextMessage(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
Message = "text-message-" + Format(CurrentDate(), "DF=yyyyMMddhhmmss");
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("text", Message);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "SendTextMessage", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("tout", 3000);
|
||||
|
||||
Check = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "GetMessage", Options);
|
||||
Else
|
||||
Result = Connection;
|
||||
Check = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendTextMessage", Postfix);
|
||||
OPI_TestDataRetrieval.Process(Check , "WebSocket", "SendTextMessage", "Check, " + Postfix, Message);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_SendBinaryMessage(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
SourceString = "binary-message-" + Format(CurrentDate(), "DF=yyyyMMddhhmmss");
|
||||
Data = GetBinaryDataFromString(SourceString);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("data", Data);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "SendBinaryMessage", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("tout", 3000);
|
||||
|
||||
Check = OPI_TestDataRetrieval.ExecuteTestCLI("ws", "GetMessage", Options);
|
||||
Else
|
||||
Result = Connection;
|
||||
Check = Connection;
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "SendBinaryMessage", Postfix);
|
||||
OPI_TestDataRetrieval.Process(Check , "WebSocket", "SendBinaryMessage", "Check, " + Postfix, SourceString);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_GetTlsSettings(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Result = OPI_WebSocket.GetTlsSettings(True);
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "GetTlsSettings", Postfix);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure WebSocket_IsClientObject(FunctionParameters)
|
||||
|
||||
Postfix = FunctionParameters["Postfix"];
|
||||
Connection = CreateWebSocketClient(FunctionParameters);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
Result = OPI_WebSocket.IsClientObject(Connection);
|
||||
Else
|
||||
Result = OPI_WebSocket.IsClientObject("not-a-client");
|
||||
EndIf;
|
||||
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "IsClientObject", Postfix);
|
||||
|
||||
Result = OPI_WebSocket.IsClientObject("not-a-client");
|
||||
OPI_TestDataRetrieval.Process(Result, "WebSocket", "IsClientObject", "False, " + Postfix);
|
||||
|
||||
If OPI_WebSocket.IsClientObject(Connection) Then
|
||||
OPI_WebSocket.CloseConnection(Connection);
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion // WebSocket
|
||||
|
||||
#EndRegion // AtomicTests
|
||||
|
||||
#Region AdditionalFunctions
|
||||
|
||||
Function CreateWebSocketClient(FunctionParameters)
|
||||
|
||||
Address = GetWebSocketAddress(FunctionParameters);
|
||||
|
||||
TLSSettings = Undefined;
|
||||
ProxySettings = Undefined;
|
||||
Headers = New Structure("X-Trace-Id", "OPI-WS-TEST");
|
||||
|
||||
If FunctionParameters["TLS"] Then
|
||||
TLSSettings = OPI_WebSocket.GetTlsSettings(True);
|
||||
EndIf;
|
||||
|
||||
If FunctionParameters["Proxy"] Then
|
||||
ProxySettings = OPI_AddIns.GetProxySettings(
|
||||
FunctionParameters["Proxy_IP"],
|
||||
FunctionParameters["Proxy_Port"],
|
||||
FunctionParameters["Proxy_Type"],
|
||||
FunctionParameters["Proxy_User"],
|
||||
FunctionParameters["Proxy_Password"]);
|
||||
EndIf;
|
||||
|
||||
Return OPI_WebSocket.CreateConnection(Address, TLSSettings, ProxySettings, , Headers);
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetWebSocketAddress(FunctionParameters)
|
||||
|
||||
Scheme = ?(FunctionParameters["TLS"], "wss://", "ws://");
|
||||
Host = FunctionParameters["WS_IP"];
|
||||
Port = FunctionParameters["WS_Port"];
|
||||
|
||||
Return StrTemplate("%1%2:%3", Scheme, Host, Port);
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion // AdditionalFunctions
|
||||
|
||||
#EndRegion // Private
|
||||
|
||||
#Region Alternate
|
||||
|
||||
|
||||
Procedure WS_Клиент() Export
|
||||
WS_Client();
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
@@ -154,6 +154,7 @@ Function GetTestingSectionMapping() Export
|
||||
Sections.Insert("YandexMetrika" , 5);
|
||||
Sections.Insert("S3" , 5);
|
||||
Sections.Insert("TCP" , 5);
|
||||
Sections.Insert("WebSocket" , 5);
|
||||
Sections.Insert("GreenAPI" , 5);
|
||||
Sections.Insert("GreenMax" , 5);
|
||||
Sections.Insert("Ollama" , 5);
|
||||
@@ -189,6 +190,7 @@ Function GetTestTable(Val TestModule = "") Export
|
||||
Metrika = "YandexMetrika";
|
||||
S3_ = "S3";
|
||||
TCP = "TCP";
|
||||
WebSocket = "WebSocket";
|
||||
SQLite = "SQLite";
|
||||
Postgres = "PostgreSQL";
|
||||
MongoDB = "MongoDB";
|
||||
@@ -336,6 +338,7 @@ Function GetTestTable(Val TestModule = "") Export
|
||||
NewTest(TestTable, "AWS_BucketsManagement" , "Buckets management" , S3_);
|
||||
NewTest(TestTable, "AWS_ObjectsManagement" , "Objects management" , S3_);
|
||||
NewTest(TestTable, "TC_Client" , "TCP Client" , TCP);
|
||||
NewTest(TestTable, "WS_Client" , "WebSocket Client" , WebSocket);
|
||||
NewTest(TestTable, "TC_Server" , "TCP Host" , TCP);
|
||||
NewTest(TestTable, "SQLL_CommonMethods" , "Common methods" , SQLite);
|
||||
NewTest(TestTable, "SQLL_ORM" , "ORM" , SQLite);
|
||||
@@ -988,6 +991,85 @@ Function GetFTPParameterOptions() Export
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetWebSocketParametersOptions() Export
|
||||
|
||||
OptionArray = New Array;
|
||||
|
||||
TestParametersMain = New Structure;
|
||||
ParameterToCollection("WS_IP" , TestParametersMain);
|
||||
ParameterToCollection("WS_Port" , TestParametersMain);
|
||||
ParameterToCollection("WSS_IP" , TestParametersMain);
|
||||
ParameterToCollection("WSS_Port" , TestParametersMain);
|
||||
ParameterToCollection("Proxy_User" , TestParametersMain);
|
||||
ParameterToCollection("Proxy_Password", TestParametersMain);
|
||||
ParameterToCollection("Socks5_IP" , TestParametersMain);
|
||||
ParameterToCollection("Socks5_Port" , TestParametersMain);
|
||||
|
||||
Localhost = GetLocalhost();
|
||||
|
||||
Socks5IP = TestParametersMain["Socks5_IP"];
|
||||
TestParametersMain["Socks5_IP"] = ?(Socks5IP = "127.0.0.1", Localhost, Socks5IP);
|
||||
|
||||
// WS
|
||||
ParametersStructure = New Structure;
|
||||
ParametersStructure.Insert("Postfix", "WS");
|
||||
ParametersStructure.Insert("WS_IP", Localhost);
|
||||
ParametersStructure.Insert("WS_Port", TestParametersMain["WS_Port"]);
|
||||
ParametersStructure.Insert("Proxy_User", TestParametersMain["Proxy_User"]);
|
||||
ParametersStructure.Insert("Proxy_Password", TestParametersMain["Proxy_Password"]);
|
||||
ParametersStructure.Insert("Proxy_IP", TestParametersMain["Socks5_IP"]);
|
||||
ParametersStructure.Insert("Proxy_Port", TestParametersMain["Socks5_Port"]);
|
||||
ParametersStructure.Insert("Proxy_Type", "socks5");
|
||||
ParametersStructure.Insert("Proxy", False);
|
||||
ParametersStructure.Insert("TLS", False);
|
||||
OptionArray.Add(ParametersStructure);
|
||||
|
||||
// WSS
|
||||
ParametersStructure = New Structure;
|
||||
ParametersStructure.Insert("Postfix", "WSS");
|
||||
ParametersStructure.Insert("WS_IP", Localhost);
|
||||
ParametersStructure.Insert("WS_Port", TestParametersMain["WSS_Port"]);
|
||||
ParametersStructure.Insert("Proxy_User", TestParametersMain["Proxy_User"]);
|
||||
ParametersStructure.Insert("Proxy_Password", TestParametersMain["Proxy_Password"]);
|
||||
ParametersStructure.Insert("Proxy_IP", TestParametersMain["Socks5_IP"]);
|
||||
ParametersStructure.Insert("Proxy_Port", TestParametersMain["Socks5_Port"]);
|
||||
ParametersStructure.Insert("Proxy_Type", "socks5");
|
||||
ParametersStructure.Insert("Proxy", False);
|
||||
ParametersStructure.Insert("TLS", True);
|
||||
OptionArray.Add(ParametersStructure);
|
||||
|
||||
// WS + Socks5
|
||||
ParametersStructure = New Structure;
|
||||
ParametersStructure.Insert("Postfix", "WS, Socks5");
|
||||
ParametersStructure.Insert("WS_IP", TestParametersMain["WS_IP"]);
|
||||
ParametersStructure.Insert("WS_Port", TestParametersMain["WS_Port"]);
|
||||
ParametersStructure.Insert("Proxy_User", TestParametersMain["Proxy_User"]);
|
||||
ParametersStructure.Insert("Proxy_Password", TestParametersMain["Proxy_Password"]);
|
||||
ParametersStructure.Insert("Proxy_IP", TestParametersMain["Socks5_IP"]);
|
||||
ParametersStructure.Insert("Proxy_Port", TestParametersMain["Socks5_Port"]);
|
||||
ParametersStructure.Insert("Proxy_Type", "socks5");
|
||||
ParametersStructure.Insert("Proxy", True);
|
||||
ParametersStructure.Insert("TLS", False);
|
||||
OptionArray.Add(ParametersStructure);
|
||||
|
||||
// WSS + Socks5
|
||||
ParametersStructure = New Structure;
|
||||
ParametersStructure.Insert("Postfix", "WSS, Socks5");
|
||||
ParametersStructure.Insert("WS_IP", TestParametersMain["WSS_IP"]);
|
||||
ParametersStructure.Insert("WS_Port", TestParametersMain["WSS_Port"]);
|
||||
ParametersStructure.Insert("Proxy_User", TestParametersMain["Proxy_User"]);
|
||||
ParametersStructure.Insert("Proxy_Password", TestParametersMain["Proxy_Password"]);
|
||||
ParametersStructure.Insert("Proxy_IP", TestParametersMain["Socks5_IP"]);
|
||||
ParametersStructure.Insert("Proxy_Port", TestParametersMain["Socks5_Port"]);
|
||||
ParametersStructure.Insert("Proxy_Type", "socks5");
|
||||
ParametersStructure.Insert("Proxy", True);
|
||||
ParametersStructure.Insert("TLS", True);
|
||||
OptionArray.Add(ParametersStructure);
|
||||
|
||||
Return OptionArray;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetSSHParameterOptions() Export
|
||||
|
||||
OptionArray = New Array;
|
||||
@@ -7692,6 +7774,109 @@ Function Check_TCP_IsServerObject(Val Result, Val Option)
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_CreateConnection(Val Result, Val Option)
|
||||
|
||||
Result = String(TypeOf(Result));
|
||||
ExpectsThat(Result).Равно("AddIn.OPI_WSClient.Main");
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_CloseConnection(Val Result, Val Option)
|
||||
|
||||
If Left(Option, 8) = "Openning" Then
|
||||
Result = String(TypeOf(Result));
|
||||
ExpectsThat(Result).Равно("AddIn.OPI_WSClient.Main");
|
||||
Else
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_SendPing(Val Result, Val Option)
|
||||
|
||||
If Left(Option, 8) = "Check" Then
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["type"]).Равно("pong");
|
||||
Else
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_SendPong(Val Result, Val Option)
|
||||
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_GetMessage(Val Result, Val Option, Message = "")
|
||||
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["type"]).Равно("text");
|
||||
ExpectsThat(Result["data"]).Равно(Message);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_SendTextMessage(Val Result, Val Option, Message = "")
|
||||
|
||||
If Left(Option, 8) = "Check" Then
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["type"]).Равно("text");
|
||||
ExpectsThat(Result["data"]).Равно(Message);
|
||||
Else
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_SendBinaryMessage(Val Result, Val Option, Message = "")
|
||||
|
||||
If Left(Option, 8) = "Check" Then
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["type"]).Равно("binary");
|
||||
Data = GetStringFromBinaryData(Result["data"]);
|
||||
ExpectsThat(Data).Равно(Message);
|
||||
Result["data"] = "<BinaryData>";
|
||||
Else
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_GetTlsSettings(Val Result, Val Option)
|
||||
|
||||
ExpectsThat(OPI_Tools.ThisIsCollection(Result, True)).Равно(True);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_WebSocket_IsClientObject(Val Result, Val Option)
|
||||
|
||||
If Left(Option, 4) = "False" Then
|
||||
ExpectsThat(Result).Равно(False);
|
||||
Else
|
||||
ExpectsThat(Result).Равно(True);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_SQLite_CreateConnection(Val Result, Val Option)
|
||||
|
||||
If Option = "Closing" Then
|
||||
@@ -15098,6 +15283,10 @@ Function ПолучитьВариантыПараметровFTP() Export
|
||||
Return GetFTPParameterOptions();
|
||||
EndFunction
|
||||
|
||||
Function ПолучитьВариантыПараметровWebSocket() Export
|
||||
Return GetWebSocketParametersOptions();
|
||||
EndFunction
|
||||
|
||||
Function ПолучитьВариантыПараметровSSH() Export
|
||||
Return GetSSHParameterOptions();
|
||||
EndFunction
|
||||
|
||||
+69
-27
@@ -93,33 +93,13 @@ Function FileTransferRequired() Export
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetLoggingSettings(Val WriteToMemory = True
|
||||
, Val MaxEvents = 300
|
||||
, Val FilePath = "") Export
|
||||
Function NotAddinParameterError() Export
|
||||
|
||||
OPI_TypeConversion.GetBoolean(WriteToMemory);
|
||||
OPI_TypeConversion.GetLine(FilePath);
|
||||
OPI_TypeConversion.GetNumber(MaxEvents);
|
||||
Result = New Map;
|
||||
Result.Insert("result", False);
|
||||
Result.Insert("error" , "The passed value is not an AddIn object");
|
||||
|
||||
SettingsStructure = New Structure;
|
||||
WriteToFile = ValueIsFilled(FilePath);
|
||||
|
||||
If WriteToMemory Then
|
||||
SettingsStructure.Insert("mode" , "memory");
|
||||
SettingsStructure.Insert("max_entries", MaxEvents);
|
||||
EndIf;
|
||||
|
||||
If WriteToFile Then
|
||||
SettingsStructure.Insert("mode" , "file");
|
||||
SettingsStructure.Insert("file_path", FilePath);
|
||||
EndIf;
|
||||
|
||||
If WriteToFile And WriteToMemory Then
|
||||
SettingsStructure.Insert("mode", "both");
|
||||
EndIf;
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Return SettingsStructure;
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
@@ -250,6 +230,60 @@ EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Logging
|
||||
|
||||
Function GetLoggingSettings(Val WriteToMemory = True
|
||||
, Val MaxEvents = 300
|
||||
, Val FilePath = "") Export
|
||||
|
||||
OPI_TypeConversion.GetBoolean(WriteToMemory);
|
||||
OPI_TypeConversion.GetLine(FilePath);
|
||||
OPI_TypeConversion.GetNumber(MaxEvents);
|
||||
|
||||
SettingsStructure = New Structure;
|
||||
WriteToFile = ValueIsFilled(FilePath);
|
||||
|
||||
If WriteToMemory Then
|
||||
SettingsStructure.Insert("mode" , "memory");
|
||||
SettingsStructure.Insert("max_entries", MaxEvents);
|
||||
EndIf;
|
||||
|
||||
If WriteToFile Then
|
||||
SettingsStructure.Insert("mode" , "file");
|
||||
SettingsStructure.Insert("file_path", FilePath);
|
||||
EndIf;
|
||||
|
||||
If WriteToFile And WriteToMemory Then
|
||||
SettingsStructure.Insert("mode", "both");
|
||||
EndIf;
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Return SettingsStructure;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetLog(Val ServerObject, Val AsString = False, Val EventCount = 100) Export
|
||||
|
||||
If Not IsAddIn(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetNumber(EventCount);
|
||||
OPI_TypeConversion.GetBoolean(AsString);
|
||||
|
||||
Result = ServerObject.GetLogs(EventCount);
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
If AsString And Result["result"] Then
|
||||
Result = StrConcat(Result["logs"], Chars.LF);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Private
|
||||
@@ -395,8 +429,8 @@ Function ТребуетсяПередачаЧерезФайл() Export
|
||||
Return FileTransferRequired();
|
||||
EndFunction
|
||||
|
||||
Function ПолучитьНастройкиЛогирования(Val ЗаписьВПамять = True, Val МаксимумСобытий = 300, Val ПутьКФайлу = "") Export
|
||||
Return GetLoggingSettings(ЗаписьВПамять, МаксимумСобытий, ПутьКФайлу);
|
||||
Function ОшибкаПараметрНеКомпонента() Export
|
||||
Return NotAddinParameterError();
|
||||
EndFunction
|
||||
|
||||
Function УстановитьTls(Val Компонета, Val Tls) Export
|
||||
@@ -419,6 +453,14 @@ Function ПолучитьДанные(Val Компонента, Val КлючДа
|
||||
Return ReceiveData(Компонента, КлючДанных);
|
||||
EndFunction
|
||||
|
||||
Function ПолучитьНастройкиЛогирования(Val ЗаписьВПамять = True, Val МаксимумСобытий = 300, Val ПутьКФайлу = "") Export
|
||||
Return GetLoggingSettings(ЗаписьВПамять, МаксимумСобытий, ПутьКФайлу);
|
||||
EndFunction
|
||||
|
||||
Function ПолучитьЛог(Val ОбъектСервера, Val КакСтрока = False, Val ЧислоСобытий = 100) Export
|
||||
Return GetLog(ОбъектСервера, КакСтрока, ЧислоСобытий);
|
||||
EndFunction
|
||||
|
||||
Function КаталогКомпонентOS() Export
|
||||
Return AddInsFolderOS();
|
||||
EndFunction
|
||||
|
||||
+8
-42
@@ -77,7 +77,7 @@ Function StopServer(Val Module, Val ServerObject) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
|
||||
Result = NotAddinParameterError();
|
||||
Result = OPI_AddIns.NotAddinParameterError();
|
||||
|
||||
Else
|
||||
|
||||
@@ -96,7 +96,7 @@ Function GetNextConnectionData(Val Module
|
||||
, Val MaxSize = 8192) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
Return OPI_AddIns.NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetNumber(Timeout);
|
||||
@@ -118,7 +118,7 @@ Function GetConnectionData(Val Module
|
||||
, Val MaxSize = 8192) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
Return OPI_AddIns.NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetNumber(Timeout);
|
||||
@@ -137,7 +137,7 @@ EndFunction
|
||||
Function SendData(Val Module, Val ServerObject, Val ConnectionID, Val Data) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
Return OPI_AddIns.NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetBinaryData(Data, True, False);
|
||||
@@ -153,7 +153,7 @@ EndFunction
|
||||
Function CloseIncomingConnection(Val Module, Val ServerObject, Val ConnectionID) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
Return OPI_AddIns.NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetLine(ConnectionID);
|
||||
@@ -168,7 +168,7 @@ EndFunction
|
||||
Function CompleteSend(Val Module, Val ServerObject, Val ConnectionID) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
Return OPI_AddIns.NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetLine(ConnectionID);
|
||||
@@ -183,7 +183,7 @@ EndFunction
|
||||
Function FinishReceiving(Val Module, Val ServerObject, Val ConnectionID) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
Return OPI_AddIns.NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetLine(ConnectionID);
|
||||
@@ -198,7 +198,7 @@ EndFunction
|
||||
Function GetConnectionList(Val Module, Val ServerObject) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
Return OPI_AddIns.NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
Result = ServerObject.GetConnectionsList();
|
||||
@@ -208,40 +208,10 @@ Function GetConnectionList(Val Module, Val ServerObject) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
Function GetLog(Val Module, Val ServerObject, Val AsString = False, Val EventCount = 100) Export
|
||||
|
||||
If Not Module.IsServerObject(ServerObject) Then
|
||||
Return NotAddinParameterError();
|
||||
EndIf;
|
||||
|
||||
OPI_TypeConversion.GetNumber(EventCount);
|
||||
OPI_TypeConversion.GetBoolean(AsString);
|
||||
|
||||
Result = ServerObject.GetLogs(EventCount);
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
If AsString And Result["result"] Then
|
||||
Result = StrConcat(Result["logs"], Chars.LF);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region Internal
|
||||
|
||||
Function NotAddinParameterError()
|
||||
|
||||
Result = New Map;
|
||||
Result.Insert("result", False);
|
||||
Result.Insert("error" , "The passed value is not a server object");
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Procedure CompleteMessageWithVaultData(Val ServerObject, MessageStructure)
|
||||
|
||||
DataKey = Undefined;
|
||||
@@ -295,8 +265,4 @@ Function ПолучитьСписокСоединений(Val Модуль, Val
|
||||
Return GetConnectionList(Модуль, ОбъектСервера);
|
||||
EndFunction
|
||||
|
||||
Function ПолучитьЛог(Val Модуль, Val ОбъектСервера, Val КакСтрока = False, Val ЧислоСобытий = 100) Export
|
||||
Return GetLog(Модуль, ОбъектСервера, КакСтрока, ЧислоСобытий);
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
+1
-1
@@ -32,7 +32,7 @@
|
||||
|
||||
Function GetHashSum() Export
|
||||
|
||||
LastBuildHash = "66C0E1541DEF92AD15A4861C5D49CD77457292F4348396608CA790C480727349";
|
||||
LastBuildHash = "C9C6784E6F6A8D8A56E9C9F5673721469DD3310F2A6E16E8833BBDF2514DC63B";
|
||||
|
||||
Return LastBuildHash;
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
66C0E1541DEF92AD15A4861C5D49CD77457292F4348396608CA790C480727349
|
||||
C9C6784E6F6A8D8A56E9C9F5673721469DD3310F2A6E16E8833BBDF2514DC63B
|
||||
+32
@@ -10,11 +10,43 @@
|
||||
"methods": [
|
||||
"GetMessage",
|
||||
"SendBinaryMessage",
|
||||
"SendPing",
|
||||
"SendPong",
|
||||
"SendTextMessage"
|
||||
]
|
||||
}
|
||||
],
|
||||
"methods": [
|
||||
{
|
||||
"name": "SendPing",
|
||||
"id": "SENDPING",
|
||||
"description": "Sends a ping to the remote server",
|
||||
"params": [
|
||||
{
|
||||
"name": "--conn",
|
||||
"types": "Arbitrary",
|
||||
"description": "Connection, See CreateConnection",
|
||||
"default": null,
|
||||
"short": "-c"
|
||||
}
|
||||
],
|
||||
"region": "Client methods"
|
||||
},
|
||||
{
|
||||
"name": "SendPong",
|
||||
"id": "SENDPONG",
|
||||
"description": "Sends a pong to the remote server",
|
||||
"params": [
|
||||
{
|
||||
"name": "--conn",
|
||||
"types": "Arbitrary",
|
||||
"description": "Connection, See CreateConnection",
|
||||
"default": null,
|
||||
"short": "-c"
|
||||
}
|
||||
],
|
||||
"region": "Client methods"
|
||||
},
|
||||
{
|
||||
"name": "GetMessage",
|
||||
"id": "GETMESSAGE",
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
Function GetHashSum() Export
|
||||
|
||||
LastBuildHash = "66C0E1541DEF92AD15A4861C5D49CD77457292F4348396608CA790C480727349";
|
||||
LastBuildHash = "C9C6784E6F6A8D8A56E9C9F5673721469DD3310F2A6E16E8833BBDF2514DC63B";
|
||||
|
||||
Return LastBuildHash;
|
||||
|
||||
|
||||
@@ -562,8 +562,8 @@
|
||||
Функция ПолучитьЛог(Знач ОбъектСервера, Знач КакСтрока = Ложь, Знач ЧислоСобытий = 100) Экспорт
|
||||
|
||||
Возврат OPI_Компоненты.ПолучитьЛог(ОбъектСервера
|
||||
, КакСтрока
|
||||
, ЧислоСобытий);
|
||||
, КакСтрока
|
||||
, ЧислоСобытий);
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
@@ -85,8 +85,8 @@
|
||||
Функция ПолучитьЛог(Знач ОбъектСервера, Знач КакСтрока = Ложь, Знач ЧислоСобытий = 100) Экспорт
|
||||
|
||||
Возврат OPI_Компоненты.ПолучитьЛог(ОбъектСервера
|
||||
, КакСтрока
|
||||
, ЧислоСобытий);
|
||||
, КакСтрока
|
||||
, ЧислоСобытий);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -147,19 +147,19 @@
|
||||
СтрокаНастроек = OPI_Инструменты.JSONСтрокой(Логирование);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Если ЗначениеЗаполнено(Заголовки) Тогда
|
||||
|
||||
ТекстОшибки = "Некорректная структура заголовков";
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Заголовки, ТекстОшибки);
|
||||
|
||||
|
||||
ЗаголовкиСтрокой = OPI_Инструменты.JSONСтрокой(Заголовки);
|
||||
Результат = WSКлиент.SetHeaders(ЗаголовкиСтрокой);
|
||||
|
||||
|
||||
Если Не OPI_Инструменты.ПолучитьИли(Результат, "result", Ложь) Тогда
|
||||
Возврат Результат;
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Результат = WSКлиент.Connect(Адрес, СтрокаНастроек);
|
||||
@@ -183,9 +183,9 @@
|
||||
|
||||
Если ЭтоОбъектКлиента(Соединение) Тогда
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Код);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Причина);
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Код);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Причина);
|
||||
|
||||
Результат = Соединение.Close(Код, Причина);
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь);
|
||||
|
||||
@@ -202,10 +202,10 @@
|
||||
|
||||
// Отправить пинг
|
||||
// Отправляет пинг удаленному серверу
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Соединение, См. ОткрытьСоединение - conn
|
||||
//
|
||||
// Соединение - Произвольный - Соединение, См. ОткрытьСоединение - conn
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения
|
||||
Функция ОтправитьПинг(Знач Соединение) Экспорт
|
||||
@@ -224,15 +224,15 @@
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Отправить понг
|
||||
// Отправляет понг удаленному серверу
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Соединение, См. ОткрытьСоединение - conn
|
||||
//
|
||||
// Соединение - Произвольный - Соединение, См. ОткрытьСоединение - conn
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат выполнения
|
||||
Функция ОтправитьПонг(Знач Соединение) Экспорт
|
||||
@@ -251,7 +251,7 @@
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить сообщение
|
||||
@@ -279,15 +279,15 @@
|
||||
|
||||
Результат = Соединение.ReceiveMessage(Таймаут);
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
|
||||
|
||||
Если OPI_Инструменты.ПолучитьИли(Результат, "type", "") = "binary" Тогда
|
||||
|
||||
Данные = OPI_Инструменты.ПолучитьИли(Результат, "data", "");
|
||||
|
||||
Если ЗначениеЗаполнено(Данные) Тогда
|
||||
Результат.Вставить("data", OPI_Компоненты.ПолучитьДанные(Соединение, Данные));
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Данные = OPI_Инструменты.ПолучитьИли(Результат, "data", "");
|
||||
|
||||
Если ЗначениеЗаполнено(Данные) Тогда
|
||||
Результат.Вставить("data", OPI_Компоненты.ПолучитьДанные(Соединение, Данные));
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
@@ -264,10 +264,10 @@
|
||||
|
||||
Функция ПолучитьЛог(Знач ОбъектСервера, Знач КакСтрока = Ложь, Знач ЧислоСобытий = 100) Экспорт
|
||||
|
||||
Если Не ЭтоКомпонента(ОбъектСервера) Тогда
|
||||
Возврат ОшибкаПараметрНеКомпонента();
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЭтоКомпонента(ОбъектСервера) Тогда
|
||||
Возврат ОшибкаПараметрНеКомпонента();
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(ЧислоСобытий);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(КакСтрока);
|
||||
|
||||
|
||||
@@ -7848,7 +7848,7 @@
|
||||
Если Лев(Вариант, 8) = "Проверка" Тогда
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
ОжидаетЧто(Результат["type"]).Равно("binary");
|
||||
Данные = ПолучитьСтрокуИзДвоичныхДанных(Результат["data"]);
|
||||
Данные = ПолучитьСтрокуИзДвоичныхДанных(Результат["data"]);
|
||||
ОжидаетЧто(Данные).Равно(Сообщение);
|
||||
Результат["data"] = "<ДвоичныеДанные>";
|
||||
Иначе
|
||||
|
||||
+24
-24
@@ -125,7 +125,7 @@
|
||||
|
||||
Процедура WebSocket_ОткрытьСоединение(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Соединение, "WebSocket", "ОткрытьСоединение", Постфикс);
|
||||
@@ -138,7 +138,7 @@
|
||||
|
||||
Процедура WebSocket_ЗакрытьСоединение(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Соединение, "WebSocket", "ЗакрытьСоединение", "Открытие, " + Постфикс); // SKIP
|
||||
@@ -155,19 +155,19 @@
|
||||
|
||||
Процедура WebSocket_ОтправитьПинг(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ОтправитьПинг(Соединение);
|
||||
Проверка = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
|
||||
Проверка = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
Проверка = Соединение;
|
||||
Проверка = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОтправитьПинг", Постфикс);
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Проверка, "WebSocket", "ОтправитьПинг", "Проверка, " + Постфикс);
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Проверка , "WebSocket", "ОтправитьПинг", "Проверка, " + Постфикс);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
@@ -177,7 +177,7 @@
|
||||
|
||||
Процедура WebSocket_ОтправитьПонг(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
@@ -196,12 +196,12 @@
|
||||
|
||||
Процедура WebSocket_ПолучитьСообщение(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
Сообщение = "echo-text-" + Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Отправка = OPI_WebSocket.ОтправитьТекстовоеСообщение(Соединение, Сообщение); // SKIP
|
||||
Отправка = OPI_WebSocket.ОтправитьТекстовоеСообщение(Соединение, Сообщение); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Отправка, "WebSocket", "ПолучитьСообщение", "Отправка, " + Постфикс); // SKIP
|
||||
Результат = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
|
||||
Иначе
|
||||
@@ -218,20 +218,20 @@
|
||||
|
||||
Процедура WebSocket_ОтправитьТекстовоеСообщение(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
Сообщение = "text-message-" + Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ОтправитьТекстовоеСообщение(Соединение, Сообщение);
|
||||
Проверка = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
|
||||
Проверка = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
Проверка = Соединение;
|
||||
Проверка = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОтправитьТекстовоеСообщение", Постфикс);
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Проверка, "WebSocket", "ОтправитьТекстовоеСообщение", "Проверка, " + Постфикс, Сообщение);
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Проверка , "WebSocket", "ОтправитьТекстовоеСообщение", "Проверка, " + Постфикс, Сообщение);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
@@ -241,21 +241,21 @@
|
||||
|
||||
Процедура WebSocket_ОтправитьДвоичноеСообщение(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
ИсходнаяСтрока = "binary-message-" + Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
|
||||
Данные = ПолучитьДвоичныеДанныеИзСтроки(ИсходнаяСтрока);
|
||||
Данные = ПолучитьДвоичныеДанныеИзСтроки(ИсходнаяСтрока);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ОтправитьДвоичноеСообщение(Соединение, Данные);
|
||||
Проверка = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
|
||||
Проверка = OPI_WebSocket.ПолучитьСообщение(Соединение, 3000);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
Проверка = Соединение;
|
||||
Проверка = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОтправитьДвоичноеСообщение", Постфикс);
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Проверка, "WebSocket", "ОтправитьДвоичноеСообщение", "Проверка, " + Постфикс, ИсходнаяСтрока);
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Проверка , "WebSocket", "ОтправитьДвоичноеСообщение", "Проверка, " + Постфикс, ИсходнаяСтрока);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
@@ -265,7 +265,7 @@
|
||||
|
||||
Процедура WebSocket_ПолучитьНастройкиTls(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Результат = OPI_WebSocket.ПолучитьНастройкиTls(Истина);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ПолучитьНастройкиTls", Постфикс);
|
||||
@@ -274,7 +274,7 @@
|
||||
|
||||
Процедура WebSocket_ЭтоОбъектКлиента(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
@@ -304,9 +304,9 @@
|
||||
|
||||
Адрес = ПолучитьАдресWebSocket(ПараметрыФункции);
|
||||
|
||||
НастройкиTls = Неопределено;
|
||||
НастройкиTls = Неопределено;
|
||||
НастройкиПрокси = Неопределено;
|
||||
Заголовки = Новый Структура("X-Trace-Id", "OPI-WS-TEST");
|
||||
Заголовки = Новый Структура("X-Trace-Id", "OPI-WS-TEST");
|
||||
|
||||
Если ПараметрыФункции["TLS"] Тогда
|
||||
НастройкиTls = OPI_WebSocket.ПолучитьНастройкиTls(Истина);
|
||||
@@ -328,8 +328,8 @@
|
||||
Функция ПолучитьАдресWebSocket(ПараметрыФункции)
|
||||
|
||||
Схема = ?(ПараметрыФункции["TLS"], "wss://", "ws://");
|
||||
Хост = ПараметрыФункции["WS_IP"];
|
||||
Порт = ПараметрыФункции["WS_Port"];
|
||||
Хост = ПараметрыФункции["WS_IP"];
|
||||
Порт = ПараметрыФункции["WS_Port"];
|
||||
|
||||
Возврат СтрШаблон("%1%2:%3", Схема, Хост, Порт);
|
||||
|
||||
|
||||
+286
-1
@@ -87,9 +87,294 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
#Область ЗапускаемыеТесты
|
||||
|
||||
#Область WebSocket
|
||||
|
||||
Процедура WS_Клиент() Экспорт
|
||||
|
||||
МассивВариантов = OPI_ПолучениеДанныхТестов.ПолучитьВариантыПараметровWebSocket();
|
||||
|
||||
Для Каждого ПараметрыТеста Из МассивВариантов Цикл
|
||||
|
||||
WebSocket_ОткрытьСоединение(ПараметрыТеста);
|
||||
WebSocket_ЗакрытьСоединение(ПараметрыТеста);
|
||||
WebSocket_ОтправитьПинг(ПараметрыТеста);
|
||||
WebSocket_ОтправитьПонг(ПараметрыТеста);
|
||||
WebSocket_ПолучитьСообщение(ПараметрыТеста);
|
||||
WebSocket_ОтправитьТекстовоеСообщение(ПараметрыТеста);
|
||||
WebSocket_ОтправитьДвоичноеСообщение(ПараметрыТеста);
|
||||
WebSocket_ПолучитьНастройкиTls(ПараметрыТеста);
|
||||
WebSocket_ЭтоОбъектКлиента(ПараметрыТеста);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти // WebSocket
|
||||
|
||||
#КонецОбласти // ЗапускаемыеТесты
|
||||
|
||||
#КонецОбласти // СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#Область АтомарныеТесты
|
||||
|
||||
#Область WebSocket
|
||||
|
||||
Процедура WebSocket_ОткрытьСоединение(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Соединение, "WebSocket", "ОткрытьСоединение", Постфикс);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура WebSocket_ЗакрытьСоединение(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Соединение, "WebSocket", "ЗакрытьСоединение", "Открытие, " + Постфикс); // SKIP
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ЗакрытьСоединение", Постфикс);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура WebSocket_ОтправитьПинг(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ws", "ОтправитьПинг", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("tout", 3000);
|
||||
|
||||
Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ws", "ПолучитьСообщение", Опции);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
Проверка = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОтправитьПинг", Постфикс);
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Проверка , "WebSocket", "ОтправитьПинг", "Проверка, " + Постфикс);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура WebSocket_ОтправитьПонг(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ws", "ОтправитьПонг", Опции);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОтправитьПонг", Постфикс);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура WebSocket_ПолучитьСообщение(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
Сообщение = "echo-text-" + Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Отправка = OPI_WebSocket.ОтправитьТекстовоеСообщение(Соединение, Сообщение); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Отправка, "WebSocket", "ПолучитьСообщение", "Отправка, " + Постфикс); // SKIP
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("tout", 3000);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ws", "ПолучитьСообщение", Опции);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ПолучитьСообщение", Постфикс, Сообщение);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура WebSocket_ОтправитьТекстовоеСообщение(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
Сообщение = "text-message-" + Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("text", Сообщение);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ws", "ОтправитьТекстовоеСообщение", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("tout", 3000);
|
||||
|
||||
Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ws", "ПолучитьСообщение", Опции);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
Проверка = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОтправитьТекстовоеСообщение", Постфикс);
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Проверка , "WebSocket", "ОтправитьТекстовоеСообщение", "Проверка, " + Постфикс, Сообщение);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура WebSocket_ОтправитьДвоичноеСообщение(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
ИсходнаяСтрока = "binary-message-" + Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
|
||||
Данные = ПолучитьДвоичныеДанныеИзСтроки(ИсходнаяСтрока);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("data", Данные);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ws", "ОтправитьДвоичноеСообщение", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("tout", 3000);
|
||||
|
||||
Проверка = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ws", "ПолучитьСообщение", Опции);
|
||||
Иначе
|
||||
Результат = Соединение;
|
||||
Проверка = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ОтправитьДвоичноеСообщение", Постфикс);
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Проверка , "WebSocket", "ОтправитьДвоичноеСообщение", "Проверка, " + Постфикс, ИсходнаяСтрока);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура WebSocket_ПолучитьНастройкиTls(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Результат = OPI_WebSocket.ПолучитьНастройкиTls(Истина);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ПолучитьНастройкиTls", Постфикс);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура WebSocket_ЭтоОбъектКлиента(ПараметрыФункции)
|
||||
|
||||
Постфикс = ПараметрыФункции["Postfix"];
|
||||
Соединение = СоздатьКлиентWebSocket(ПараметрыФункции);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
Результат = OPI_WebSocket.ЭтоОбъектКлиента(Соединение);
|
||||
Иначе
|
||||
Результат = OPI_WebSocket.ЭтоОбъектКлиента("not-a-client");
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ЭтоОбъектКлиента", Постфикс);
|
||||
|
||||
Результат = OPI_WebSocket.ЭтоОбъектКлиента("not-a-client");
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "WebSocket", "ЭтоОбъектКлиента", "Ложь, " + Постфикс);
|
||||
|
||||
Если OPI_WebSocket.ЭтоОбъектКлиента(Соединение) Тогда
|
||||
OPI_WebSocket.ЗакрытьСоединение(Соединение);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти // WebSocket
|
||||
|
||||
#КонецОбласти // АтомарныеТесты
|
||||
|
||||
#Область ВспомогательныеФункции
|
||||
|
||||
Функция СоздатьКлиентWebSocket(ПараметрыФункции)
|
||||
|
||||
Адрес = ПолучитьАдресWebSocket(ПараметрыФункции);
|
||||
|
||||
НастройкиTls = Неопределено;
|
||||
НастройкиПрокси = Неопределено;
|
||||
Заголовки = Новый Структура("X-Trace-Id", "OPI-WS-TEST");
|
||||
|
||||
Если ПараметрыФункции["TLS"] Тогда
|
||||
НастройкиTls = OPI_WebSocket.ПолучитьНастройкиTls(Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Если ПараметрыФункции["Proxy"] Тогда
|
||||
НастройкиПрокси = OPI_Компоненты.ПолучитьНастройкиПрокси(
|
||||
ПараметрыФункции["Proxy_IP"],
|
||||
ПараметрыФункции["Proxy_Port"],
|
||||
ПараметрыФункции["Proxy_Type"],
|
||||
ПараметрыФункции["Proxy_User"],
|
||||
ПараметрыФункции["Proxy_Password"]);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат OPI_WebSocket.ОткрытьСоединение(Адрес, НастройкиTls, НастройкиПрокси, , Заголовки);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьАдресWebSocket(ПараметрыФункции)
|
||||
|
||||
Схема = ?(ПараметрыФункции["TLS"], "wss://", "ws://");
|
||||
Хост = ПараметрыФункции["WS_IP"];
|
||||
Порт = ПараметрыФункции["WS_Port"];
|
||||
|
||||
Возврат СтрШаблон("%1%2:%3", Схема, Хост, Порт);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти // ВспомогательныеФункции
|
||||
|
||||
#КонецОбласти // СлужебныеПроцедурыИФункции
|
||||
|
||||
#Region Alternate
|
||||
|
||||
|
||||
Procedure WS_Client() Export
|
||||
WS_Клиент();
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user