You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2026-06-09 23:56:48 +02:00
Рефакторинг mongodb и lua
This commit is contained in:
@@ -1,14 +1,13 @@
|
||||
"MAIN ---"
|
||||
linux-vdso.so.1 (0x00007ffee48cc000)
|
||||
libm.so.6 => /lib64/libm.so.6 (0x000071267b400000)
|
||||
libpthread.so.0 => /lib64/libpthread.so.0 (0x000071267b000000)
|
||||
libc.so.6 => /lib64/libc.so.6 (0x000071267ac00000)
|
||||
libdl.so.2 => /lib64/libdl.so.2 (0x000071267a800000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x000071267b800000)
|
||||
linux-vdso.so.1 (0x00007ffd0c973000)
|
||||
libm.so.6 => /lib64/libm.so.6 (0x00007f4015a00000)
|
||||
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4015600000)
|
||||
libc.so.6 => /lib64/libc.so.6 (0x00007f4015200000)
|
||||
libdl.so.2 => /lib64/libdl.so.2 (0x00007f4014e00000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x00007f4015e00000)
|
||||
GLIBC_2.2.5
|
||||
GLIBC_2.12
|
||||
GLIBC_2.3
|
||||
GLIBC_2.3.4
|
||||
GLIBC_2.7
|
||||
GLIBC_2.14
|
||||
GLIBC_2.17
|
||||
|
||||
+33
-19
@@ -22,61 +22,68 @@ impl AddIn {
|
||||
}
|
||||
|
||||
pub fn execute_string(&self, code: &str) -> JanxValue {
|
||||
self.lock_backend().execute_string(code.to_string())
|
||||
let mut backend = self.lock_backend();
|
||||
backend.execute_string(code.to_string())
|
||||
}
|
||||
|
||||
pub fn execute_file(&self, path: &str) -> JanxValue {
|
||||
self.lock_backend().execute_file(path.to_string())
|
||||
let mut backend = self.lock_backend();
|
||||
backend.execute_file(path.to_string())
|
||||
}
|
||||
|
||||
pub fn execute_bytecode(&self, bytecode: Vec<u8>) -> JanxValue {
|
||||
self.lock_backend().execute_bytecode(bytecode)
|
||||
let mut backend = self.lock_backend();
|
||||
backend.execute_bytecode(bytecode)
|
||||
}
|
||||
|
||||
pub fn execute_bytecode_file(&self, path: &str) -> JanxValue {
|
||||
self.lock_backend()
|
||||
.execute_bytecode_file(path.to_string())
|
||||
let mut backend = self.lock_backend();
|
||||
backend.execute_bytecode_file(path.to_string())
|
||||
}
|
||||
|
||||
pub fn compile_to_bytecode(&self, code: &str) -> Result<Vec<u8>, String> {
|
||||
self.lock_backend()
|
||||
.compile_to_bytecode(code.to_string())
|
||||
let mut backend = self.lock_backend();
|
||||
backend.compile_to_bytecode(code.to_string())
|
||||
}
|
||||
|
||||
pub fn compile_file_to_bytecode(&self, path: &str) -> Result<Vec<u8>, String> {
|
||||
self.lock_backend()
|
||||
.compile_file_to_bytecode(path.to_string())
|
||||
let mut backend = self.lock_backend();
|
||||
backend.compile_file_to_bytecode(path.to_string())
|
||||
}
|
||||
|
||||
pub fn call_function(&self, function_name: &str, args_janx: Vec<u8>) -> JanxValue {
|
||||
self.lock_backend()
|
||||
.call_function(function_name.to_string(), args_janx)
|
||||
let mut backend = self.lock_backend();
|
||||
backend.call_function(function_name.to_string(), args_janx)
|
||||
}
|
||||
|
||||
pub fn set_global(&self, variable_name: &str, value_janx: Vec<u8>) -> JanxValue {
|
||||
self.lock_backend()
|
||||
.set_global(variable_name.to_string(), value_janx)
|
||||
let mut backend = self.lock_backend();
|
||||
backend.set_global(variable_name.to_string(), value_janx)
|
||||
}
|
||||
|
||||
pub fn get_global(&self, variable_name: &str) -> JanxValue {
|
||||
self.lock_backend().get_global(variable_name.to_string())
|
||||
let mut backend = self.lock_backend();
|
||||
backend.get_global(variable_name.to_string())
|
||||
}
|
||||
|
||||
pub fn add_package(&self, package_name: String, code: String) -> JanxValue {
|
||||
self.lock_backend().add_package(package_name, code)
|
||||
let mut backend = self.lock_backend();
|
||||
backend.add_package(package_name, code)
|
||||
}
|
||||
|
||||
pub fn load_package_from_file(&self, package_name: String, file_path: String) -> JanxValue {
|
||||
self.lock_backend()
|
||||
.load_package_from_file(package_name, file_path)
|
||||
let mut backend = self.lock_backend();
|
||||
backend.load_package_from_file(package_name, file_path)
|
||||
}
|
||||
|
||||
pub fn get_packages(&self) -> JanxValue {
|
||||
self.lock_backend().get_packages()
|
||||
let mut backend = self.lock_backend();
|
||||
backend.get_packages()
|
||||
}
|
||||
|
||||
pub fn reset(&self) -> JanxValue {
|
||||
self.lock_backend().reset()
|
||||
let mut backend = self.lock_backend();
|
||||
backend.reset()
|
||||
}
|
||||
|
||||
pub fn set_logger(&mut self, logger_config: &JanxValue) -> JanxValue {
|
||||
@@ -110,3 +117,10 @@ impl AddIn {
|
||||
self.get_field_ptr(index) as *mut _
|
||||
}
|
||||
}
|
||||
|
||||
impl Drop for AddIn {
|
||||
fn drop(&mut self) {
|
||||
let mut backend = self.lock_backend();
|
||||
backend.close_backend();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,39 +15,37 @@ pub struct LynaBackend {
|
||||
|
||||
impl LynaBackend {
|
||||
pub fn new() -> Self {
|
||||
let thread = worker::spawn_thread()
|
||||
.unwrap_or_else(|e| panic!("Failed to initialize lyna backend thread: {}", e));
|
||||
Self {
|
||||
thread: Some(thread),
|
||||
thread: None,
|
||||
logger: None,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn execute_string(&self, code: String) -> JanxValue {
|
||||
pub fn execute_string(&mut self, code: String) -> JanxValue {
|
||||
self.call(|response| WorkerCommand::ExecuteString { code, response })
|
||||
}
|
||||
|
||||
pub fn execute_file(&self, path: String) -> JanxValue {
|
||||
pub fn execute_file(&mut self, path: String) -> JanxValue {
|
||||
self.call(|response| WorkerCommand::ExecuteFile { path, response })
|
||||
}
|
||||
|
||||
pub fn execute_bytecode(&self, bytecode: Vec<u8>) -> JanxValue {
|
||||
pub fn execute_bytecode(&mut self, bytecode: Vec<u8>) -> JanxValue {
|
||||
self.call(|response| WorkerCommand::ExecuteBytecode { bytecode, response })
|
||||
}
|
||||
|
||||
pub fn execute_bytecode_file(&self, path: String) -> JanxValue {
|
||||
pub fn execute_bytecode_file(&mut self, path: String) -> JanxValue {
|
||||
self.call(|response| WorkerCommand::ExecuteBytecodeFile { path, response })
|
||||
}
|
||||
|
||||
pub fn compile_to_bytecode(&self, code: String) -> Result<Vec<u8>, String> {
|
||||
pub fn compile_to_bytecode(&mut self, code: String) -> Result<Vec<u8>, String> {
|
||||
self.call_binary(|response| WorkerCommand::CompileToBytecode { code, response })
|
||||
}
|
||||
|
||||
pub fn compile_file_to_bytecode(&self, path: String) -> Result<Vec<u8>, String> {
|
||||
pub fn compile_file_to_bytecode(&mut self, path: String) -> Result<Vec<u8>, String> {
|
||||
self.call_binary(|response| WorkerCommand::CompileFileToBytecode { path, response })
|
||||
}
|
||||
|
||||
pub fn call_function(&self, function_name: String, args_janx: Vec<u8>) -> JanxValue {
|
||||
pub fn call_function(&mut self, function_name: String, args_janx: Vec<u8>) -> JanxValue {
|
||||
self.call(|response| WorkerCommand::CallFunction {
|
||||
function_name,
|
||||
args_janx,
|
||||
@@ -55,7 +53,7 @@ impl LynaBackend {
|
||||
})
|
||||
}
|
||||
|
||||
pub fn set_global(&self, variable_name: String, value_janx: Vec<u8>) -> JanxValue {
|
||||
pub fn set_global(&mut self, variable_name: String, value_janx: Vec<u8>) -> JanxValue {
|
||||
self.call(|response| WorkerCommand::SetGlobal {
|
||||
variable_name,
|
||||
value_janx,
|
||||
@@ -63,14 +61,14 @@ impl LynaBackend {
|
||||
})
|
||||
}
|
||||
|
||||
pub fn get_global(&self, variable_name: String) -> JanxValue {
|
||||
pub fn get_global(&mut self, variable_name: String) -> JanxValue {
|
||||
self.call(|response| WorkerCommand::GetGlobal {
|
||||
variable_name,
|
||||
response,
|
||||
})
|
||||
}
|
||||
|
||||
pub fn add_package(&self, package_name: String, code: String) -> JanxValue {
|
||||
pub fn add_package(&mut self, package_name: String, code: String) -> JanxValue {
|
||||
self.call(|response| WorkerCommand::AddPackage {
|
||||
package_name,
|
||||
code,
|
||||
@@ -78,7 +76,7 @@ impl LynaBackend {
|
||||
})
|
||||
}
|
||||
|
||||
pub fn load_package_from_file(&self, package_name: String, file_path: String) -> JanxValue {
|
||||
pub fn load_package_from_file(&mut self, package_name: String, file_path: String) -> JanxValue {
|
||||
self.call(|response| WorkerCommand::LoadPackageFromFile {
|
||||
package_name,
|
||||
file_path,
|
||||
@@ -86,11 +84,11 @@ impl LynaBackend {
|
||||
})
|
||||
}
|
||||
|
||||
pub fn get_packages(&self) -> JanxValue {
|
||||
pub fn get_packages(&mut self) -> JanxValue {
|
||||
self.call(|response| WorkerCommand::GetPackages { response })
|
||||
}
|
||||
|
||||
pub fn reset(&self) -> JanxValue {
|
||||
pub fn reset(&mut self) -> JanxValue {
|
||||
self.call(|response| WorkerCommand::Reset { response })
|
||||
}
|
||||
|
||||
@@ -100,7 +98,10 @@ impl LynaBackend {
|
||||
}
|
||||
|
||||
self.logger = Some(logger.clone());
|
||||
self.call_result(|response| WorkerCommand::SetLogger { logger, response })
|
||||
if self.thread.is_some() {
|
||||
self.call_result(|response| WorkerCommand::SetLogger { logger, response })?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn get_logs(&self, count: usize) -> Option<(Vec<String>, usize)> {
|
||||
@@ -111,7 +112,13 @@ impl LynaBackend {
|
||||
})
|
||||
}
|
||||
|
||||
fn call<F>(&self, build: F) -> JanxValue
|
||||
pub fn close_backend(&mut self) {
|
||||
if let Some(mut thread) = self.thread.take() {
|
||||
let _ = thread.shutdown(Some(WorkerCommand::Shutdown));
|
||||
}
|
||||
}
|
||||
|
||||
fn call<F>(&mut self, build: F) -> JanxValue
|
||||
where
|
||||
F: FnOnce(Sender<JanxValue>) -> WorkerCommand,
|
||||
{
|
||||
@@ -121,37 +128,54 @@ impl LynaBackend {
|
||||
}
|
||||
}
|
||||
|
||||
fn call_binary<F>(&self, build: F) -> Result<Vec<u8>, String>
|
||||
fn call_binary<F>(&mut self, build: F) -> Result<Vec<u8>, String>
|
||||
where
|
||||
F: FnOnce(Sender<Result<Vec<u8>, String>>) -> WorkerCommand,
|
||||
{
|
||||
self.call_thread(build).and_then(|result| result)
|
||||
}
|
||||
|
||||
fn call_result<F>(&self, build: F) -> Result<(), String>
|
||||
fn call_result<F>(&mut self, build: F) -> Result<(), String>
|
||||
where
|
||||
F: FnOnce(Sender<Result<(), String>>) -> WorkerCommand,
|
||||
{
|
||||
self.call_thread(build).and_then(|result| result)
|
||||
}
|
||||
|
||||
fn call_thread<T, F>(&self, build: F) -> Result<T, String>
|
||||
fn call_thread<T, F>(&mut self, build: F) -> Result<T, String>
|
||||
where
|
||||
T: Send,
|
||||
F: FnOnce(Sender<T>) -> WorkerCommand,
|
||||
{
|
||||
let thread = self
|
||||
.thread
|
||||
.as_ref()
|
||||
.ok_or_else(|| "Backend thread is not available".to_string())?;
|
||||
self.ensure_thread()?;
|
||||
let thread = self.require_thread()?;
|
||||
thread.call(build)
|
||||
}
|
||||
|
||||
fn require_thread(&self) -> Result<&SyncBackendThread<WorkerCommand>, String> {
|
||||
self.thread
|
||||
.as_ref()
|
||||
.ok_or_else(|| "Backend thread is not available".to_string())
|
||||
}
|
||||
|
||||
fn ensure_thread(&mut self) -> Result<(), String> {
|
||||
if self.thread.is_some() {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
let thread = worker::spawn_thread()?;
|
||||
self.thread = Some(thread);
|
||||
|
||||
if let Some(logger) = self.logger.clone() {
|
||||
self.call_result(|response| WorkerCommand::SetLogger { logger, response })?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl Drop for LynaBackend {
|
||||
fn drop(&mut self) {
|
||||
if let Some(mut thread) = self.thread.take() {
|
||||
let _ = thread.shutdown(Some(WorkerCommand::Shutdown));
|
||||
}
|
||||
self.close_backend();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
"MAIN ---"
|
||||
linux-vdso.so.1 (0x00007fffb2df3000)
|
||||
libm.so.6 => /lib64/libm.so.6 (0x0000700ce0a00000)
|
||||
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000700ce0600000)
|
||||
libc.so.6 => /lib64/libc.so.6 (0x0000700ce0200000)
|
||||
libdl.so.2 => /lib64/libdl.so.2 (0x0000700cdfe00000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x0000700ce1400000)
|
||||
linux-vdso.so.1 (0x00007ffe6532d000)
|
||||
libm.so.6 => /lib64/libm.so.6 (0x0000760f65800000)
|
||||
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000760f65400000)
|
||||
libc.so.6 => /lib64/libc.so.6 (0x0000760f65000000)
|
||||
libdl.so.2 => /lib64/libdl.so.2 (0x0000760f64c00000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x0000760f66200000)
|
||||
GLIBC_2.2.5
|
||||
GLIBC_2.12
|
||||
GLIBC_2.3
|
||||
|
||||
@@ -68,8 +68,8 @@ impl AddIn {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn execute(&mut self, params: JanxValue) -> JanxValue {
|
||||
let mut client = self.lock_client();
|
||||
pub fn execute(&self, params: JanxValue) -> JanxValue {
|
||||
let client = self.lock_client();
|
||||
match client.execute(params) {
|
||||
Ok(result) => result,
|
||||
Err(e) => janx_error(e),
|
||||
@@ -87,3 +87,9 @@ impl AddIn {
|
||||
self.get_field_ptr(index) as *mut _
|
||||
}
|
||||
}
|
||||
|
||||
impl Drop for AddIn {
|
||||
fn drop(&mut self) {
|
||||
self.lock_client().close_backend();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,10 +61,7 @@ impl MongoDBBackend {
|
||||
|
||||
self.ensure_thread()?;
|
||||
|
||||
let thread = self
|
||||
.thread
|
||||
.as_ref()
|
||||
.ok_or_else(|| "Backend thread is not available".to_string())?;
|
||||
let thread = self.require_thread()?;
|
||||
|
||||
thread
|
||||
.call(|response| WorkerCommand::Connect {
|
||||
@@ -76,14 +73,7 @@ impl MongoDBBackend {
|
||||
}
|
||||
|
||||
pub fn disconnect(&mut self) -> Result<(), String> {
|
||||
if !self.is_connected() {
|
||||
return Err("Connection already closed".to_string());
|
||||
}
|
||||
|
||||
let thread = self
|
||||
.thread
|
||||
.as_ref()
|
||||
.ok_or_else(|| "Backend thread is not available".to_string())?;
|
||||
let thread = self.require_connected()?;
|
||||
|
||||
thread
|
||||
.call(|response| WorkerCommand::Disconnect { response })
|
||||
@@ -91,16 +81,8 @@ impl MongoDBBackend {
|
||||
}
|
||||
|
||||
pub fn execute(&self, params: JanxValue) -> Result<JanxValue, String> {
|
||||
if !self.is_connected() {
|
||||
return Err("Connection already closed".to_string());
|
||||
}
|
||||
|
||||
let execute_params = parse_execute_params(params)?;
|
||||
|
||||
let thread = self
|
||||
.thread
|
||||
.as_ref()
|
||||
.ok_or_else(|| "Backend thread is not available".to_string())?;
|
||||
let thread = self.require_connected()?;
|
||||
|
||||
thread.call(|response| WorkerCommand::Execute {
|
||||
params: execute_params,
|
||||
@@ -108,12 +90,25 @@ impl MongoDBBackend {
|
||||
})
|
||||
}
|
||||
|
||||
pub fn close(&mut self) {
|
||||
pub fn close_backend(&mut self) {
|
||||
if let Some(mut thread) = self.thread.take() {
|
||||
let _ = thread.shutdown(Some(WorkerCommand::Shutdown));
|
||||
}
|
||||
}
|
||||
|
||||
fn require_connected(&self) -> Result<&BackendThread<WorkerCommand>, String> {
|
||||
if !self.is_connected() {
|
||||
return Err("Not connected to MongoDB".to_string());
|
||||
}
|
||||
self.require_thread()
|
||||
}
|
||||
|
||||
fn require_thread(&self) -> Result<&BackendThread<WorkerCommand>, String> {
|
||||
self.thread
|
||||
.as_ref()
|
||||
.ok_or_else(|| "Backend thread is not available".to_string())
|
||||
}
|
||||
|
||||
fn ensure_thread(&mut self) -> Result<(), String> {
|
||||
if self.thread.is_some() {
|
||||
return Ok(());
|
||||
@@ -127,6 +122,6 @@ impl MongoDBBackend {
|
||||
|
||||
impl Drop for MongoDBBackend {
|
||||
fn drop(&mut self) {
|
||||
self.close();
|
||||
self.close_backend();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,6 +169,7 @@
|
||||
Разделы.Вставить("RSS" , 5);
|
||||
Разделы.Вставить("MessagePack" , 5);
|
||||
Разделы.Вставить("Janx" , 5);
|
||||
Разделы.Вставить("Lua" , 5);
|
||||
|
||||
Возврат Разделы;
|
||||
|
||||
@@ -217,6 +218,7 @@
|
||||
ZMQ = "ZeroMQ";
|
||||
MsgPack = "MessagePack";
|
||||
Janx = "Janx";
|
||||
Lua = "Lua";
|
||||
|
||||
МассивТестов = Новый Массив;
|
||||
|
||||
@@ -363,8 +365,10 @@
|
||||
НовыйТест(МассивТестов, МодульТестов, "MYS_РасширеннаяПроверка" , "Расширенная проверка" , MySQL);
|
||||
НовыйТест(МассивТестов, МодульТестов, "MYS_ORM" , "ORM" , MySQL);
|
||||
НовыйТест(МассивТестов, МодульТестов, "MSS_ОсновныеМетоды" , "Основные методы" , MSSQL);
|
||||
НовыйТест(МассивТестов, МодульТестов, "MSS_РасширеннаяПроверка" , "Расширенная проверка" , MSSQL);
|
||||
НовыйТест(МассивТестов, МодульТестов, "MSS_ORM" , "ORM" , MSSQL);
|
||||
НовыйТест(МассивТестов, МодульТестов, "Mongo_ОсновныеМетоды" , "Основные методы" , MongoDB);
|
||||
НовыйТест(МассивТестов, МодульТестов, "Mongo_РасширеннаяПроверка" , "Расширенная проверка" , MongoDB);
|
||||
НовыйТест(МассивТестов, МодульТестов, "Mongo_РаботаСБазами" , "Работа с базами" , MongoDB);
|
||||
НовыйТест(МассивТестов, МодульТестов, "Mongo_РаботаСКоллекциями" , "Работа с коллекциями" , MongoDB);
|
||||
НовыйТест(МассивТестов, МодульТестов, "Mongo_РаботаСДокументами" , "Работа с документами" , MongoDB);
|
||||
@@ -424,6 +428,10 @@
|
||||
НовыйТест(МассивТестов, МодульТестов, "MP_Совместимость" , "Совместимость с эталоном" , MsgPack);
|
||||
НовыйТест(МассивТестов, МодульТестов, "Jnx_Данные" , "Данные" , Janx);
|
||||
НовыйТест(МассивТестов, МодульТестов, "Jnx_Бенчмарк" , "Бенчмарк" , Janx);
|
||||
НовыйТест(МассивТестов, МодульТестов, "Lua_ОсновныеМетоды" , "Основные методы" , Lua);
|
||||
НовыйТест(МассивТестов, МодульТестов, "Lua_РаботаСоСкриптами" , "Работа со скриптами" , Lua);
|
||||
НовыйТест(МассивТестов, МодульТестов, "Lua_РаботаСБайткодом" , "Работа с байткодом" , Lua);
|
||||
НовыйТест(МассивТестов, МодульТестов, "Lua_РасширеннаяПроверка" , "Расширенная проверка" , Lua);
|
||||
|
||||
Возврат МассивТестов;
|
||||
|
||||
@@ -11941,6 +11949,52 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_MSSQL_Расширенная_ВыполнитьЗапросБезПодключения(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Ложь);
|
||||
ОжидаетЧто(СтрНайти(нРег(Результат["error"]), "not connected") > 0).Равно(Истина);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_MSSQL_Расширенная_ПодключениеБезСтроки(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Ложь);
|
||||
ОжидаетЧто(СтрНайти(нРег(Результат["error"]), "empty connection") > 0).Равно(Истина);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_MSSQL_Расширенная_ПовторноеПодключение(Знач Результат, Знач Вариант)
|
||||
|
||||
ТекстОшибки = нРег(Результат["error"]);
|
||||
ЭтоПовтор = СтрНайти(ТекстОшибки, "already") > 0
|
||||
Или СтрНайти(ТекстОшибки, "initialized") > 0
|
||||
Или СтрНайти(ТекстОшибки, "connected") > 0;
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Ложь);
|
||||
ОжидаетЧто(ЭтоПовтор).Равно(Истина);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_MSSQL_Расширенная_ПолучитьЛогПриПодключении(Знач Результат, Знач Вариант, ФайлЛога = "")
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
ОжидаетЧто(Результат["logs"]).ИмеетТип("Массив");
|
||||
ОжидаетЧто(Результат["logs"].Количество() > 0).Равно(Истина);
|
||||
|
||||
ОбъектЛога = Новый Файл(ФайлЛога);
|
||||
ОжидаетЧто(ОбъектЛога.Существует()).Равно(Истина);
|
||||
ОжидаетЧто(ОбъектЛога.Размер() > 0).Равно(Истина);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_MSSQL_СформироватьСтрокуПодключения(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("Строка").Заполнено();
|
||||
@@ -13758,6 +13812,52 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_MongoDB_Расширенная_ВыполнитьКомандуБезПодключения(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Ложь);
|
||||
ОжидаетЧто(СтрНайти(нРег(Результат["error"]), "not connected") > 0).Равно(Истина);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_MongoDB_Расширенная_ПодключениеБезСтроки(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Ложь);
|
||||
ОжидаетЧто(СтрНайти(нРег(Результат["error"]), "empty connection") > 0).Равно(Истина);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_MongoDB_Расширенная_ПовторноеПодключение(Знач Результат, Знач Вариант)
|
||||
|
||||
ТекстОшибки = нРег(Результат["error"]);
|
||||
ЭтоПовтор = СтрНайти(ТекстОшибки, "already") > 0
|
||||
Или СтрНайти(ТекстОшибки, "initialized") > 0
|
||||
Или СтрНайти(ТекстОшибки, "connected") > 0;
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Ложь);
|
||||
ОжидаетЧто(ЭтоПовтор).Равно(Истина);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_MongoDB_Расширенная_ПолучитьЛогПриПодключении(Знач Результат, Знач Вариант, ФайлЛога = "")
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
ОжидаетЧто(Результат["logs"]).ИмеетТип("Массив");
|
||||
ОжидаетЧто(Результат["logs"].Количество() > 0).Равно(Истина);
|
||||
|
||||
ОбъектЛога = Новый Файл(ФайлЛога);
|
||||
ОжидаетЧто(ОбъектЛога.Существует()).Равно(Истина);
|
||||
ОжидаетЧто(ОбъектЛога.Размер() > 0).Равно(Истина);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_MongoDB_СформироватьСтрокуПодключения(Знач Результат, Знач Вариант, Параметры = "")
|
||||
|
||||
Адрес = "127.0.0.1:1234";
|
||||
@@ -15494,6 +15594,120 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_Lua_Расширенная_ОшибкаВыполненияКода(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Ложь);
|
||||
ОжидаетЧто(ЗначениеЗаполнено(Результат["error"])).Равно(Истина);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_Lua_Расширенная_ПолучитьЛогБезИнициализации(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Ложь);
|
||||
ОжидаетЧто(СтрНайти(нРег(Результат["error"]), "logger not initialized") > 0).Равно(Истина);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_Lua_Расширенная_ПолучитьЛогПриВыполнении(Знач Результат, Знач Вариант, ФайлЛога = "")
|
||||
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
ОжидаетЧто(Результат["logs"]).ИмеетТип("Массив");
|
||||
ОжидаетЧто(Результат["logs"].Количество() > 0).Равно(Истина);
|
||||
|
||||
ОбъектЛога = Новый Файл(ФайлЛога);
|
||||
ОжидаетЧто(ОбъектЛога.Существует()).Равно(Истина);
|
||||
ОжидаетЧто(ОбъектЛога.Размер() > 0).Равно(Истина);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_Lua_СоздатьVM(Знач Результат, Знач Вариант)
|
||||
|
||||
Если Вариант = "LuaJIT" Тогда
|
||||
ОжидаетЧто(Строка(ТипЗнч(Результат))).Равно("AddIn.OPI_LuaJIT.Main");
|
||||
Иначе
|
||||
ОжидаетЧто(Строка(ТипЗнч(Результат))).Равно("AddIn.OPI_Lua54.Main");
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_Lua_ЭтоVM(Знач Результат, Знач Вариант)
|
||||
|
||||
Если Вариант = "Lua54" Тогда
|
||||
ОжидаетЧто(Результат).Равно(Истина);
|
||||
Иначе
|
||||
ОжидаетЧто(Результат).Равно(Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_Lua_ВыполнитьКодИзСтроки(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат).Равно(42);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_Lua_ВыполнитьКодИзФайла(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат).Равно(7);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_Lua_ВызватьФункцию(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат).Равно(3);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_Lua_СкомпилироватьКодИзСтроки(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("ДвоичныеДанные");
|
||||
ОжидаетЧто(Результат.Размер() > 0).Равно(Истина);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_Lua_СкомпилироватьКодИзФайла(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("ДвоичныеДанные");
|
||||
ОжидаетЧто(Результат.Размер() > 0).Равно(Истина);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_Lua_ВыполнитьБайтКод(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат).Равно(11);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_Lua_ВыполнитьБайтКодФайла(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(Результат).Равно(13);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_Janx_СериализоватьДанные(Знач Результат, Знач Вариант, Восстановленное = Неопределено, ИсходноеЗначение = Неопределено)
|
||||
|
||||
ОжидаетЧто(ТипЗнч(Результат)).Равно(Тип("ДвоичныеДанные"));
|
||||
|
||||
@@ -0,0 +1,327 @@
|
||||
// OneScript: ./OInt/tests/Modules/OPIt_Lua.os
|
||||
|
||||
// MIT License
|
||||
|
||||
// Copyright (c) 2023-2026 Anton Tsitavets
|
||||
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||
|
||||
// Набор тестов для YAxUnit
|
||||
|
||||
// BSLLS:Typo-off
|
||||
// BSLLS:LatinAndCyrillicSymbolInWord-off
|
||||
// BSLLS:IncorrectLineBreak-off
|
||||
// BSLLS:UsingServiceTag-off
|
||||
// BSLLS:UnusedParameters-off
|
||||
// BSLLS:DuplicateStringLiteral-off
|
||||
// BSLLS:UsingHardcodePath-off
|
||||
// BSLLS:UnusedLocalVariable-off
|
||||
// BSLLS:DeprecatedMessage-off
|
||||
// BSLLS:LineLength-off
|
||||
// BSLLS:MagicNumber-off
|
||||
// BSLLS:CommentedCode-off
|
||||
// BSLLS:AssignAliasFieldsInQuery-off
|
||||
// BSLLS:UsingHardcodeNetworkAddress-off
|
||||
// BSLLS:UnreachableCode-off
|
||||
// BSLLS:UnusedLocalMethod-off
|
||||
// BSLLS:NestedFunctionInParameters-off
|
||||
// BSLLS:MissingTemporaryFileDeletion-off
|
||||
// BSLLS:UsingSynchronousCalls-off
|
||||
// BSLLS:MagicDate-off
|
||||
// BSLLS:MissingParameterDescription-off
|
||||
// BSLLS:NumberOfOptionalParams-off
|
||||
// BSLLS:MethodSize-off
|
||||
// BSLLS:NestedConstructorsInStructureDeclaration-off
|
||||
// BSLLS:NumberOfValuesInStructureConstructor-off
|
||||
// BSLLS:UsingHardcodeSecretInformation-off
|
||||
// BSLLS:SpaceAtStartComment-off
|
||||
|
||||
//@skip-check undefined-variable
|
||||
//@skip-check wrong-string-literal-content
|
||||
//@skip-check module-structure-top-region
|
||||
//@skip-check module-structure-method-in-regions
|
||||
//@skip-check undefined-function-or-procedure
|
||||
//@skip-check module-unused-local-variable
|
||||
//@skip-check bsl-legacy-check-string-literal
|
||||
//@skip-check bsl-legacy-check-method-for-statements-after-return
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
//@skip-check module-unused-method
|
||||
|
||||
// #Использовать oint
|
||||
// #Использовать asserts
|
||||
// #Использовать "internal"
|
||||
|
||||
#Если Не ВебКлиент Тогда // !OPI
|
||||
|
||||
// Для YaxUnit
|
||||
|
||||
Процедура ИсполняемыеСценарии() Экспорт
|
||||
|
||||
OPI_ПолучениеДанныхТестов.СформироватьТестыЯкс("Lua");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Для Asserts
|
||||
|
||||
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
|
||||
|
||||
Возврат OPI_ПолучениеДанныхТестов.СформироватьТестыАссертс("Lua");
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
#Область ЗапускаемыеТесты
|
||||
|
||||
#Область Lua
|
||||
|
||||
Процедура Lua_ОсновныеМетоды() Экспорт
|
||||
|
||||
Lua_СоздатьVM();
|
||||
Lua_ЭтоVM();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_РаботаСоСкриптами() Экспорт
|
||||
|
||||
Lua_ВыполнитьКодИзСтроки();
|
||||
Lua_ВыполнитьКодИзФайла();
|
||||
Lua_ВызватьФункцию();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_РаботаСБайткодом() Экспорт
|
||||
|
||||
Lua_СкомпилироватьКодИзСтроки();
|
||||
Lua_СкомпилироватьКодИзФайла();
|
||||
Lua_ВыполнитьБайтКод();
|
||||
Lua_ВыполнитьБайтКодФайла();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_РасширеннаяПроверка() Экспорт
|
||||
|
||||
OPI_ПолучениеДанныхТестов.УстановитьПризнакТестаCLI(Ложь);
|
||||
|
||||
Если OPI_ПолучениеДанныхТестов.ЭтоТестCLI() Тогда
|
||||
Сообщить("CLI SKIP");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Lua_Расширенная_ОшибкаВыполненияКода();
|
||||
Lua_Расширенная_ПолучитьЛогБезИнициализации();
|
||||
Lua_Расширенная_ПолучитьЛогПриВыполнении();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти // Lua
|
||||
|
||||
#КонецОбласти // ЗапускаемыеТесты
|
||||
|
||||
#КонецОбласти // СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#Область АтомарныеТесты
|
||||
|
||||
#Область Lua
|
||||
|
||||
Процедура Lua_СоздатьVM()
|
||||
|
||||
Результат = OPI_Lua.СоздатьVM("Lua54");
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "СоздатьVM", "Lua54");
|
||||
|
||||
Результат = OPI_Lua.СоздатьVM("LuaJIT");
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "СоздатьVM", "LuaJIT");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_ЭтоVM()
|
||||
|
||||
VM54 = OPI_Lua.СоздатьVM("Lua54");
|
||||
|
||||
Результат = OPI_Lua.ЭтоVM(VM54);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "ЭтоVM", "Lua54"); // SKIP
|
||||
|
||||
Результат = OPI_Lua.ЭтоVM("not a vm");
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "ЭтоVM", "Ложь");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_ВыполнитьКодИзСтроки()
|
||||
|
||||
Результат = OPI_Lua.ВыполнитьКодИзСтроки("Lua54", "return 42");
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "ВыполнитьКодИзСтроки");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_ВыполнитьКодИзФайла()
|
||||
|
||||
ФайлСкрипта = ПолучитьИмяВременногоФайла("lua");
|
||||
Запись = Новый ЗаписьТекста(ФайлСкрипта, КодировкаТекста.UTF8);
|
||||
Запись.Записать("return 7");
|
||||
Запись.Закрыть();
|
||||
|
||||
Результат = OPI_Lua.ВыполнитьКодИзФайла("Lua54", ФайлСкрипта);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "ВыполнитьКодИзФайла");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_ВызватьФункцию()
|
||||
|
||||
VM = OPI_Lua.СоздатьVM("Lua54");
|
||||
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(VM, "function add(a, b) return a + b end");
|
||||
|
||||
Параметры = Новый Массив;
|
||||
Параметры.Добавить(1);
|
||||
Параметры.Добавить(2);
|
||||
|
||||
Результат = OPI_Lua.ВызватьФункцию(VM, "add", Параметры);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "ВызватьФункцию");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_СкомпилироватьКодИзСтроки()
|
||||
|
||||
Результат = OPI_Lua.СкомпилироватьКодИзСтроки("Lua54", "return 1");
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "СкомпилироватьКодИзСтроки");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_СкомпилироватьКодИзФайла()
|
||||
|
||||
ФайлСкрипта = ПолучитьИмяВременногоФайла("lua");
|
||||
Запись = Новый ЗаписьТекста(ФайлСкрипта, КодировкаТекста.UTF8);
|
||||
Запись.Записать("return 3");
|
||||
Запись.Закрыть();
|
||||
|
||||
Результат = OPI_Lua.СкомпилироватьКодИзФайла("Lua54", ФайлСкрипта);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "СкомпилироватьКодИзФайла");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_ВыполнитьБайтКод()
|
||||
|
||||
БайтКод = OPI_Lua.СкомпилироватьКодИзСтроки("Lua54", "return 11");
|
||||
Результат = OPI_Lua.ВыполнитьБайтКод("Lua54", БайтКод);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "ВыполнитьБайтКод");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_ВыполнитьБайтКодФайла()
|
||||
|
||||
ФайлСкрипта = ПолучитьИмяВременногоФайла("lua");
|
||||
Запись = Новый ЗаписьТекста(ФайлСкрипта, КодировкаТекста.UTF8);
|
||||
Запись.Записать("return 13");
|
||||
Запись.Закрыть();
|
||||
|
||||
ФайлБайтКода = ПолучитьИмяВременногоФайла("bin");
|
||||
БайтКод = OPI_Lua.СкомпилироватьКодИзФайла("Lua54", ФайлСкрипта);
|
||||
|
||||
ЗаписьБин = Новый ЗаписьДвоичныхДанных(ФайлБайтКода);
|
||||
ЗаписьБин.Записать(БайтКод);
|
||||
ЗаписьБин.Закрыть();
|
||||
|
||||
Результат = OPI_Lua.ВыполнитьБайтКодФайла("Lua54", ФайлБайтКода);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "ВыполнитьБайтКодФайла");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#Область РасширеннаяПроверка
|
||||
|
||||
Процедура Lua_Расширенная_ОшибкаВыполненияКода()
|
||||
|
||||
Компонента = OPI_Компоненты.ПолучитьКомпоненту("Lua54");
|
||||
Результат = OPI_Компоненты.ДесериализоватьJanx(Компонента.ExecuteString("syntax error !!!"));
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "Расширенная_ОшибкаВыполненияКода");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_Расширенная_ПолучитьЛогБезИнициализации()
|
||||
|
||||
Компонента = OPI_Lua.СоздатьVM("Lua54");
|
||||
Результат = OPI_Компоненты.ДесериализоватьJanx(Компонента.GetLogs(10));
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "Расширенная_ПолучитьЛогБезИнициализации");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Lua_Расширенная_ПолучитьЛогПриВыполнении()
|
||||
|
||||
ФайлЛога = ПолучитьИмяВременногоФайла("txt");
|
||||
НастройкиЛогирования = OPI_Компоненты.ПолучитьНастройкиЛогирования(Истина, 100, ФайлЛога);
|
||||
|
||||
VM = OPI_Lua.СоздатьVM("Lua54", НастройкиЛогирования);
|
||||
|
||||
OPI_Lua.ВыполнитьКодИзСтроки(VM, "return 1");
|
||||
|
||||
Результат = OPI_Компоненты.ДесериализоватьJanx(VM.GetLogs(10));
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "Lua", "Расширенная_ПолучитьЛогПриВыполнении", , ФайлЛога);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти // РасширеннаяПроверка
|
||||
|
||||
#КонецОбласти // Lua
|
||||
|
||||
#КонецОбласти // АтомарныеТесты
|
||||
|
||||
#КонецОбласти // СлужебныеПроцедурыИФункции
|
||||
|
||||
#КонецЕсли // !OPI
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="a8f3c2e1-4b5d-4a9e-8c7f-1d2e3f4a5b6c">
|
||||
<name>OPIt_Lua</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Lua</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
||||
@@ -114,6 +114,28 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Mongo_РасширеннаяПроверка() Экспорт
|
||||
|
||||
OPI_ПолучениеДанныхТестов.УстановитьПризнакТестаCLI(Ложь);
|
||||
|
||||
Если OPI_ПолучениеДанныхТестов.ЭтоТестCLI() Тогда
|
||||
Сообщить("CLI SKIP");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Port" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_User" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_Password", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("MongoDB_DB" , ПараметрыТеста);
|
||||
|
||||
MongoDB_Расширенная_ВыполнитьКомандуБезПодключения(ПараметрыТеста);
|
||||
MongoDB_Расширенная_ПодключениеБезСтроки(ПараметрыТеста);
|
||||
MongoDB_Расширенная_ПовторноеПодключение(ПараметрыТеста);
|
||||
MongoDB_Расширенная_ПолучитьЛогПриПодключении(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Mongo_РаботаСБазами() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
@@ -376,6 +398,93 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#Область РасширеннаяПроверка
|
||||
|
||||
Процедура MongoDB_Расширенная_ВыполнитьКомандуБезПодключения(ПараметрыФункции)
|
||||
|
||||
Коннектор = OPI_Компоненты.ПолучитьКомпоненту("MongoDB");
|
||||
Результат = OPI_MongoDB.ВыполнитьКоманду(Коннектор, "listDatabases");
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "Расширенная_ВыполнитьКомандуБезПодключения");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура MongoDB_Расширенная_ПодключениеБезСтроки(ПараметрыФункции)
|
||||
|
||||
Коннектор = OPI_Компоненты.ПолучитьКомпоненту("MongoDB");
|
||||
Результат = OPI_Компоненты.ДесериализоватьJanx(Коннектор.Connect());
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "Расширенная_ПодключениеБезСтроки");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура MongoDB_Расширенная_ПовторноеПодключение(ПараметрыФункции)
|
||||
|
||||
Адрес = "127.0.0.1:1234";
|
||||
Логин = ПараметрыФункции["MongoDB_User"];
|
||||
Пароль = ПараметрыФункции["MongoDB_Password"];
|
||||
База = ПараметрыФункции["MongoDB_DB"];
|
||||
|
||||
Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"];
|
||||
|
||||
ПараметрыПодключения = Новый Структура("authSource", "admin");
|
||||
СтрокаПодключения = OPI_MongoDB.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль, ПараметрыПодключения);
|
||||
|
||||
Коннектор = OPI_Компоненты.ПолучитьКомпоненту("MongoDB");
|
||||
|
||||
Коннектор.ConnectionString = СтрокаПодключения;
|
||||
ПервоеПодключение = OPI_Компоненты.ДесериализоватьJanx(Коннектор.Connect());
|
||||
|
||||
Если Не ПервоеПодключение["result"] Тогда
|
||||
ВызватьИсключение OPI_Инструменты.JSONСтрокой(ПервоеПодключение);
|
||||
КонецЕсли;
|
||||
|
||||
Результат = OPI_Компоненты.ДесериализоватьJanx(Коннектор.Connect());
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "Расширенная_ПовторноеПодключение");
|
||||
OPI_MongoDB.ЗакрытьСоединение(Коннектор);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура MongoDB_Расширенная_ПолучитьЛогПриПодключении(ПараметрыФункции)
|
||||
|
||||
ФайлЛога = ПолучитьИмяВременногоФайла("txt");
|
||||
НастройкиЛогирования = OPI_MongoDB.ПолучитьНастройкиЛогирования(Истина, 100, ФайлЛога);
|
||||
|
||||
Адрес = "127.0.0.1:1234";
|
||||
Логин = ПараметрыФункции["MongoDB_User"];
|
||||
Пароль = ПараметрыФункции["MongoDB_Password"];
|
||||
|
||||
Адрес = OPI_ПолучениеДанныхТестов.ПолучитьLocalhost() + ":" + ПараметрыФункции["MongoDB_Port"];
|
||||
|
||||
ПараметрыПодключения = Новый Структура("authSource", "admin");
|
||||
СтрокаПодключения = OPI_MongoDB.СформироватьСтрокуПодключения(Адрес, , Логин, Пароль, ПараметрыПодключения);
|
||||
|
||||
Соединение = OPI_MongoDB.ОткрытьСоединение(СтрокаПодключения, НастройкиЛогирования);
|
||||
|
||||
Если Не OPI_MongoDB.ЭтоКоннектор(Соединение) Тогда
|
||||
ВызватьИсключение OPI_Инструменты.JSONСтрокой(Соединение);
|
||||
КонецЕсли;
|
||||
|
||||
OPI_MongoDB.ВыполнитьКоманду(Соединение, "listDatabases", , , Новый Структура("nameOnly", Истина));
|
||||
|
||||
Результат = OPI_MongoDB.ПолучитьЛог(Соединение);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.Обработать(Результат, "MongoDB", "Расширенная_ПолучитьЛогПриПодключении", , ФайлЛога);
|
||||
OPI_MongoDB.ЗакрытьСоединение(Соединение);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти // РасширеннаяПроверка
|
||||
|
||||
Процедура MongoDB_ПолучитьБазуДанных(ПараметрыФункции)
|
||||
|
||||
Адрес = "127.0.0.1:1234";
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
<commonModules>CommonModule.OPIt_GRPC</commonModules>
|
||||
<commonModules>CommonModule.OPIt_HTTP</commonModules>
|
||||
<commonModules>CommonModule.OPIt_Janx</commonModules>
|
||||
<commonModules>CommonModule.OPIt_Lua</commonModules>
|
||||
<commonModules>CommonModule.OPIt_MessagePack</commonModules>
|
||||
<commonModules>CommonModule.OPIt_MongoDB</commonModules>
|
||||
<commonModules>CommonModule.OPIt_MSSQL</commonModules>
|
||||
|
||||
Reference in New Issue
Block a user