Переключение на Главную Страницу Страницы: 1 ... 5 6 [7] 8 9 ... 46 ОтправитьПечать
Очень популярная тема (более 25 ответов) Тестирование 1cpp-icl (icpp) (число прочтений - 198052 )
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #90 - 04. Апреля 2008 :: 12:40
Печать  
kms писал(а) 04. Апреля 2008 :: 12:32:
Артур, давай только сразу уточним, как поймать.

Проблема на сегодняшней сборке icpp, тесты BinaryData, без formex.
Что-то вылезет с транзакциями.

Ничего не забыл?

Симптомы верные.
НО
Я закомментарил описанные выше строки, чтобы сборка была стабильнее.
Для получения бага нужно будет их раскомментировать.
В коде написано так BLModuleWrapper.cpp (в 2 местах)
Цитата:
//      m_bModuleContValid = TRUE; // TODO artbear из-за этой строки баг http://www.1cpp.ru/forum/YaBB.pl?num=1206042291/85#85
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #91 - 04. Апреля 2008 :: 12:42
Печать  
На всякий случай всю эту инфу отметил в багзилле, чтобы не забылась Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #92 - 04. Апреля 2008 :: 12:43
Печать  
kms
Ты не забыл взять отладочную версию ФормЕкс без Accept, выложенную для тебя?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Тестирование 1cpp-icl (icpp)
Ответ #93 - 04. Апреля 2008 :: 12:49
Печать  
ОК, посмотрю.
formex забрал. А он мне нужен?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #94 - 04. Апреля 2008 :: 12:50
Печать  
Я просто совершенно не уверен, что в багах при взаимодействии 3.0 и ФормЕкс виноват только ФормЕкс.
Ведь с 2.5 все ок.
Если/Когда будешь копать, думаю, пригодится.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Тестирование 1cpp-icl (icpp)
Ответ #95 - 04. Апреля 2008 :: 21:00
Печать  
об отладке классов

Проблема есть.

Заключается в том, что транзакции 1С действуют только внутри модуля, где транзакция открыта и внутри стека модулей, вызванных из данного модуля.
Транзакция не наследуется "снизу вверх", т.е. не передается вызывающему модулю.

Это справедливо и для старой отладки и для новой отладки.
Для 1cpp/2.5, для icpp/3.0 и т.д.

Если не рассматривать совсем уж экзотику, можно считать, что невозможно сделать отладку классов, которая позволяет наследовать транзакции "снизу вверх".
Это значит, что с точки зрения любой отладки класс типа "ТестовыйСлучайСДанными" некорректен (несовместим).

Почему это работает сейчас - потому же, почему не работает отладка - 1С не знает о наличии нескольких модулей в стеке выполнения.
Выбор здесь взаимоисключающий - либо отладка, либо наследование транзакции "снизу вверх" (и совместимость с подобным кодом).

Вот такая картина.
В принципе, торопиться некуда; можно остановиться, подумать и послушать пение птыц.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #96 - 05. Апреля 2008 :: 06:17
Печать  
Ответ принимается Улыбка
И какой же ты видишь выход?
Спец.метод на запрещение нативной отладки полностью или для определенных классов 1С++ ?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Тестирование 1cpp-icl (icpp)
Ответ #97 - 05. Апреля 2008 :: 07:26
Печать  
Ну, в 1cpp/2.5 можно вообще вернуть старый вариант.
А то кто знает, какие подводные камни еще могут возникнуть.

Для icpp/3.0 я готов выслушать мнения людей, о том, насколько важна возможность "обратного наследования" транзакции.
Подозреваю, что высказываний не будет много.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #98 - 05. Апреля 2008 :: 07:33
Печать  
Возможность подобного захвата/освобождения транзакций (как в ТестовыйСлучайСДанными) считаю очень важной!
Без этой возможности я лично не знаю, как реализовать возможность отката изменений в базе для возможности автоуборки данных.

У меня подобная возможность используется в нескольких проектах, например,
1. Тестовая конфа 1С++
2. Различные переносы данных

ИМХО нужно как-то придумать вариант и для зайцев и для волков Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #99 - 05. Апреля 2008 :: 18:58
Печать  
Мне нужно немного поподробнее.

Когда подкласс вызывает метод суперкласса - это "сверху вниз" или "снизу вверх"?
А когда в суперклассе вызывается метод, переопределенный в подклассе - это "сверху вниз" или "снизу вверх"?
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Тестирование 1cpp-icl (icpp)
Ответ #100 - 05. Апреля 2008 :: 20:52
Печать  
Здесь надо мыслить не в терминах ООП, а в терминах стека модулей.

Итак, объект класса - это набор модулей, из которых он сконструирован.
Агрегированный или временный объект класса - это аналогичный набор модулей.

В процессе выполнения программы мы можем оставаться в том же модуле, вызывать другой модуль и возвращать управление вызывающему модулю.
Непосредственно перед возвратом управления всегда выполняется RollbackAll для текущего (вложенного) модуля, т.е. все транзакции модуля сбрасываются.

При этом транзации вызывающего модуля остаются в силе.

Поэтому такой код может работать:

НачатьТранзакцию();
_о =СоздатьОбъект("Тест"); // : ТестовыйСлучайСДанными
_о.Запустить();
ОтменитьТранзакцию();


А такой - нет

_о =СоздатьОбъект("Тест"); // : ТестовыйСлучайСДанными
_о.Сетап(); // НачатьТранзакцию(); // метод вложенного модуля
_о.Запустить();
_о.Сброс(); // ОтменитьТранзакцию(); // метод вложенного модуля


В первом случае транзакция распространится на вложенные модули, расположенные ниже по стеку.
Во втором случае транзакция, начатая в методе Сетап(), завершится при возврате из модуля, где Сетап() определен, тест будет выполнен вне транзакции, а Сброс() приведет к ошибке типа "транзакция не активна".
  

De quelle planète es-tu?
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #101 - 06. Апреля 2008 :: 06:13
Печать  
А при обработке исключения тоже всегда происходит RollBackAll?
Эта старая дурка 1С о том, что Попытка с Транзакцией плохо дружат...
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #102 - 06. Апреля 2008 :: 06:19
Печать  
artbear писал(а) 05. Апреля 2008 :: 07:33:
Возможность подобного захвата/освобождения транзакций (как в ТестовыйСлучайСДанными) считаю очень важной!
Без этой возможности я лично не знаю, как реализовать возможность отката изменений в базе для возможности автоуборки данных.

У меня подобная возможность используется в нескольких проектах, например,
1. Тестовая конфа 1С++

Ну там вроде бы можно исхитриться. Отдать управление транзакциями не тесту, а запускальщику тестов. Уйти чуть выше по стеку вызовов. Перед запуском теста проверять его тип, и если тест хочет транзакцию - давать ему ее.

Это конечно нарушит правило самодостаточности тестов, но работать будет.

artbear писал(а) 05. Апреля 2008 :: 07:33:
2. Различные переносы данных

Тут вообще не вижу проблем. Я конечно же не знаю, как именно у тебя сделаны переносы данных, но лично я не видел переносов данных со сложной структурой вызывающих друг друга модулей. Как правило глубина стека вызовов не превышает двух.
  
Наверх
www  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Тестирование 1cpp-icl (icpp)
Ответ #103 - 06. Апреля 2008 :: 06:22
Печать  
kms писал(а) 04. Апреля 2008 :: 21:00:
Вот такая картина.
В принципе, торопиться некуда; можно остановиться, подумать и послушать пение птыц.

Пока соглашусь с такой точкой зрения.
Мы вроде бы хотели выпустить стабильный 2.5? А после этого - максимально совместимый с ним 3.0?

Конечно же такое решение кроет в себе опасность того, что к моменту, когда мы все придумаем - Мише уже будет не до транзакций Улыбка
Но лучше шашкой пока не махать, кмк.
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Тестирование 1cpp-icl (icpp)
Ответ #104 - 06. Апреля 2008 :: 07:47
Печать  
fez писал(а) 06. Апреля 2008 :: 06:13:
А при обработке исключения тоже всегда происходит RollBackAll?
Эта старая дурка 1С о том, что Попытка с Транзакцией плохо дружат...

Вроде бы в этом плане сейчас в 1С стало нормально.
RollbackAll действительно вызывается, но только для необработанного исключения.
Кстати, интересно, что транзакции могут быть вложенными, такие транзакции нормально обрабатываются.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 5 6 [7] 8 9 ... 46
ОтправитьПечать