nablarch-lettuce-adaptor
単体テストの実行方法
本モジュールの単体テストを実行するためには、Redisを別途起動しておく必要がある。
テスト用のRedisを手早く起動できるようにするため、Docker Composeのひな形ファイルを docker-compose
ディレクトリに用意している。
以下のコマンドを実行すると、ローカルでDocker Composeを起動するための設定ファイルが docker-compose-local
ディレクトリに出力される。
$ mvn -Pinit-docker-compose -DREDIS_HOST=<ローカルのIPアドレス> resources:resources
<ローカルのIPアドレス>
には、実行時のローカルの IP アドレスを設定する(localhost
, 127.0.0.1
は不可)。
コマンドラインで docker-compose-local
に移動し、以下のコマンドを実行することでテスト用のRedisを起動できる。
$ docker-compose up -d
なお、起動のためには以下のTCPポートが全て空いている必要がある。
- 単一構成用
7000
- Master-Replica構成用
- Redisインスタンス用
7101
,7102
,7103
- Sentinelインスタンス用
7111
,7112
,7113
- Redisインスタンス用
- Cluster構成用
- Redisインスタンス用
7211
,7212
,7221
,7222
,7231
,7232
- ノード間通信用
17211
,17212
,17221
,17222
,17231
,17232
- Redisインスタンス用
クラスタのテストでエラーが発生する場合
docker-compose/cluster/create-cluster/create-cluster.sh
の改行コードが CRLF になっていると、 LettuceClusterRedisClientTest
のテストで以下のようなエラーが発生する。
io.lettuce.core.RedisException: io.lettuce.core.cluster.PartitionSelectorException: Cannot determine a partition for slot 5061.
at io.lettuce.core.LettuceFutures.awaitOrCancel(LettuceFutures.java:135)
at io.lettuce.core.cluster.ClusterFutureSyncInvocationHandler.handleInvocation(ClusterFutureSyncInvocationHandler.java:123)
at io.lettuce.core.internal.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:80)
...
この場合、 create-cluster
コンテナのログには次のようなエラーログが出力されている。
$ docker-compose logs create_cluster
Attaching to create_cluster
create_cluster | /usr/local/bin/docker-entrypoint.sh: 16: exec: /redis/create-cluster.sh: not fou nd
.gitattributes
でシェルスクリプトの改行コードは LF に固定しているが、なんらかの原因で改行コードが CRLF になって上記エラーが発生した場合は、次のように対処することでエラーを解消できる。
create-cluster.sh
の改行コードを LF に変換する- Docker Compose で作成したコンテナイメージを削除する
コンテナイメージの削除は、次のコマンドで実行できる。
$ cd docker-compose
$ docker-compose down --rmi all --volumes