Есть ли быстрый способ повторно инициализировать или очистить пространство ключей etcd для тестирования?

Я пишу небольшое приложение на ruby, которое использует etcd через гем etcd-ruby для координации действий в сети. кластер.

Одна проблема, которая у меня есть, заключается в том, как написать спецификации для него.

Мой первый подход состоял в том, чтобы попытаться имитировать вызовы etcd на уровне клиента, однако это неоптимально, поскольку ответы, возвращаемые клиентом, довольно сложны с метаданными. Я думал о том, чтобы написать оболочку над клиентом etcd, чтобы удалить метаданные и упростить подход с имитацией, но проблема в том, что алгоритм время от времени зависит от этих метаданных, поэтому абстракция становится очень дырявой и просто болезненным слоем косвенности.

Другой подход заключается в использовании видеомагнитофона для записи фактических запросов. Преимущество этого заключается в том, что спецификации могут работать без etcd, но возникает путаница при инициализации состояния и управлении кассетами.

Это подводит меня к моему вопросу. etcd достаточно быстр в качестве соло-узла, поэтому проще всего использовать его непосредственно в тестах и ​​вообще не пытаться его заглушить. Единственная проблема здесь в том, что я не вижу простого способа очистить пространство ключей между тестами. Рекурсивное удаление корневого ключа не допускается. Кроме того, это не сбрасывает индексы. Я проверил спецификации etcd-ruby драгоценного камня, и, похоже, проблему удалось обойти, используя ключи, основанные на uuid, так что ключи просто никогда не сталкиваются. Я полагаю, что это жизнеспособный подход, но есть ли что-то лучше?


person gtd    schedule 11.04.2015    source источник


Ответы (1)


Я бы протестировал его на докер-контейнере etcd, который можно очень быстро разобрать и восстановить для тестов.

person chrishiestand    schedule 14.12.2015