Как запустить тесты ejabberd и написать новые модульные тесты в Erlang? - PullRequest
1 голос
/ 17 февраля 2020

Как запустить тесты ejabberd в папке тестов? Я установил rebar и удостоверился, что у меня запущен сервер ejabberd, и выполнил следующие шаги: https://docs.ejabberd.im/developer/extending-ejabberd/testing/ для запуска набора тестов.

Но я получаю следующую ошибку:

[ec2-user@ip-173-33-33-236 ejabberd]$CT_BACKENDS=mnesia rebar ct suites=ejabberd groups=mnesia
WARN:  Missing plugins: [rebar3_hex]
==> ejabberd (ct)
ERROR: ct_run -noshell -pa "/home/ec2-user/ejabberd/ebin" 
"/home/ec2-user/ejabberd/deps/jose/ebin" "/home/ec2-user/ejabberd/deps/idna/ebin" 
"/home/ec2-user/ejabberd/deps/yconf/ebin" "/home/ec2-user/ejabberd/deps/jiffy/ebin" 
"/home/ec2-user/ejabberd/deps/p1_utils/ebin" "/home/ec2-user/ejabberd/deps/base64url/ebin" 
"/home/ec2-user/ejabberd/deps/fast_yaml/ebin" "/home/ec2-user/ejabberd/deps/stringprep/ebin" 
"/home/ec2-user/ejabberd/deps/ezlib/ebin" "/home/ec2-user/ejabberd/deps/fast_tls/ebin" 
"/home/ec2-user/ejabberd/deps/fast_xml/ebin" "/home/ec2-user/ejabberd/deps/unicode_util_compat/ebin" 
"/home/ec2-user/ejabberd/deps/proper/ebin" "/home/ec2-user/ejabberd/deps/base16/ebin" 
"/home/ec2-user/ejabberd/deps/lhttpc/ebin" 
"/home/ec2-user/ejabberd/deps/eini/ebin" "/home/ec2-user/ejabberd/deps/jsx/ebin" 
"/home/ec2-user/ejabberd/deps/meck/ebin" "/home/ec2-user/ejabberd/deps/goldrush/ebin" 
"/home/ec2-user/ejabberd/deps/p1_mysql/ebin" "/home/ec2-user/ejabberd/deps/p1_acme/ebin" 
"/home/ec2-user/ejabberd/deps/mqtree/ebin" "/home/ec2-user/ejabberd/deps/eimp/ebin" 
"/home/ec2-user/ejabberd/deps/pkix/ebin" "/home/ec2-user/ejabberd/deps/p1_oauth2/ebin" 
"/home/ec2-user/ejabberd/deps/xmpp/ebin" "/home/ec2-user/ejabberd/deps/cache_tab/ebin"
 "/home/ec2-user/ejabberd/deps/uuid/ebin" "/home/ec2-user/ejabberd/deps/erlcloud/ebin" 
"/home/ec2-user/ejabberd/deps/lager/ebin" "/usr/local/bin/rebar/rebar/ebin" 
"/usr/local/bin/rebar" "/home/ec2-user/ejabberd/."  -include "/home/ec2-user/ejabberd/include"  
-name test2876@ip-172-31-32-236.us-east-2.compute.internal -logdir 
"/home/ec2-user/ejabberd/logs" -env TEST_DIR "/home/ec2-user/ejabberd/test" 
-cover /home/ec2-user/ejabberd/cover.spec  -suite test/ejabberd_SUITE.erl 
-group mnesia -ct_hooks cth_surefire  -include /home/ec2-user/ejabberd/tools 
-include /home/ec2-user/ejabberd/include -include /home/ec2-user/ejabberd/deps/p1_utils/include 
-include /home/ec2-user/ejabberd/deps/fast_xml/include 
-include /home/ec2-user/ejabberd/deps/xmpp/include  >>
 /home/ec2-user/ejabberd/logs/raw.log 2>&1 failed with error: 1 and output:

ERROR: ct failed while processing /home/ec2-user/ejabberd: rebar_abort

Как запустить эти модульные тесты? Кроме того, есть ли рекомендуемые рамки для написания модульных тестов ejabberd / erlang? Я в основном хочу запустить некоторые специфические c функции в модуле для различных входных данных и убедиться, что выходные данные правильные, и мне для этого нужна серверная часть?

Любые предложения / указатели были бы действительно признательны. Спасибо!

1 Ответ

0 голосов
/ 17 февраля 2020

Вы не упоминаете, какие версии ejabberd и erlang, поэтому я предполагаю, что они являются самыми последними доступными.

Как мне запустить эти модульные тесты?

Уведомление этот ejabberd уже включает в себя программу арматуры. Так что лучше используйте это вместо того, что вы установили. Я просто запускаю это и работаю правильно:

CT_BACKENDS=mnesia ./rebar ct suites=ejabberd groups=mnesia

Мне нужна серверная часть для этого?

Нет необходимости запускать ejabberd при запуске этого команда. По крайней мере, я остановил его перед запуском тестов ...

Кроме того, существует ли рекомендуемая среда для написания модульных тестов ejabberd / erlang? Я в основном хочу запустить некоторые специфические c функции в модуле для различных входов и убедиться, что вывод правильный и

Извините, не знаю.

...