Показаны сообщения с ярлыком инструменты. Показать все сообщения
Показаны сообщения с ярлыком инструменты. Показать все сообщения

суббота, декабря 15, 2012

XMLStarlet утилита для редактирования XML файлов из командной строки


Наконец-то нашел!

Зачем?
Иногда встречаются задачи, для решения которых необходимо модифицировать, удалить или добавить некоторые атрибуты в XML файле. 
Например, заменить connectionString в файле web.config и подобных конфигурационных файлах. 
Иногда мне приходится отслеживать изменения в XML фалах, а для этого их необходимо привести в более удобный вид. 

Решения
Я пишу скрипты на языке Perl, если необходимы более тонкие преобразования и работа с XML файлами. Для конфигурации билда перед запуском авто-тестов, у меня также есть подобные поиски и замены в файлах конфигурации на C#. Но, все это как-то заточено под конкретные файлы, и создавать универсальное решение не хотелось, но пришлось бы…

Пришлось бы, если бы я не нашел замечательный инструмент XMLStarlet, который позволяет редактировать, валидировать, запрашивать данные из XML фала через командную строку.
Со всеми возможностями инструмента я еще не разобрался, да и не надо пока. Главное, что я нашел, как заменить значения строки подключения к базе данных. А делается это так:

xml ed -u "configuration/connectionStrings/add[@name='SqlServerDb']/@connectionString" -v "Data Source=SQL2008;Initial Catalog=testdb93;User ID=admin;Password=admin;MultipleActiveResultSets=True;" My.Database.config

Создав несколько bat-файлов, я теперь могу быстро переключать приложение на разные базы данных.

Домашняя страница XMLStarlet
Страница загрузки

З.Ы: Внутри архива есть хорошее руководство пользователя

четверг, ноября 22, 2012

RamDisk – делаем всё быстрее!


Наверное, самый лучший практический совет, который я вынес из конференции XP Days – это совет по работе с Ram Disk'ами из доклада Crazy Talk: When 10 second builds start to make you nervous

Ram Disk – это технология не новая. Помню, как еще грузился с загрузочной дискеты Windows 95, где создавался такой диск с голым ДОСом. И в то время, при жестком дефиците оперативной памяти, навряд ли можно было использовать эту технологию каким либо другим способом.

Но, сейчас, когда 8 Гб – это уже так, средненько, а стоимость SSD как-то все еще неоправданно высока – для оптимизации процесса сборки большого проекта, особенно если он написан на С++ или Java – отлично подходят RAM-диски.

Простые тесты ввода-вывода показывают прирост производительности дисковых операций в 150 – 200 раз. Ну, а сам билд, со слов докладчика,  может собираться в 2 – 3 раза быстрее. Т.е. за 20 минут вместо 60-ти.

Для создания RAM-дисков существует множество как недорогих платных, так и бесплатных решений.
Я пока остановился на бесплатном ImDisk Virtual Disk Driver. Попробую, возможно получится оптимизировать некоторые операции backup/restore

четверг, июля 26, 2012

Четверг, 26-е Багфиксьня – Международный день *.bat файлов


Четверг, 26-е Багфиксьня – Международный день *.bat файлов
День *.bat файлов –  поистине знаменательная дата для всех тестировщиков планеты.
По традиции, в этот день, счастливые тестировщики создают новые *.bat файлы, автоматизируя свои рутинные действия.

Например, на рабочем столе можно создать файл для запуска вашых любимых приложений, которые вы хотите запустить в один даблклик!
start winword
start outlook
start chrome

Конечно же, *.bat-файлы, или как называют их в народе – батники, сами по себе очень стары, бородаты и ограничены. Но, ведь это всего лишь контейнер для команд!
Утилиту Ffmpeg, которой было записано это видео, я запускаю при помощи файла run.bat, следующего содержания:
ffmpeg -f dshow -i video=screen-capture-recorder -r 24000/1001 -q 1 out.avi

Бат-файлы позволяют комбинировать полезные команды, как кирпичики Лего, при этом обеспечивая их взаимодействие.
Например, за один клик, я могу:

  1. Выкачать последнюю версию исходиников проекта из системы контроля версий 
  2. Сбилдать исходники при помощи msbuild
  3. Обновить SQL-скрипты в базе данных

Все это обеспечивается правильным комбинированием различных команд.

Вам необходимо каждый день выкачивать билд с сервера заказчика? – добавьте в ваш bat-файл команду xcopy (для копирования с сетевой шары) или скачайте и используйте wget или curl для копирования файлов с HTTP/FTP ресурсов.

Ага, вам нужно деинсталлировать приложение перед установкой?
Без проблем. Используйте:
MsiExec.exe /qn /x{GUID вашего приложения} 
Проинсталлировать приложение?
msiexec /I appsetup.msi /qb /log appsetup.msi.log
 Или вы хотите остановить назойливую службу Windows Update, которая так и хочет перезапустить ваш компьютер?
sc stop wuauserv

При помощи bat-файлов вы можете автоматизировать абсолютно все!*
* Конечно же, иногда вам придется писать собственные утилиты для решения некоторых нестандартных проблем.

Ну, а автоматизированные тесты вы как запускаете? Вы уже создали отдельный *.bat-файл для этой цели? (Пользователей CI, просьба не тролить это предложение)