Skip to content

Instantly share code, notes, and snippets.

@mumumu
Last active December 27, 2015 21:31
Show Gist options
  • Save mumumu/ef3f01a47f1889d092c1 to your computer and use it in GitHub Desktop.
Save mumumu/ef3f01a47f1889d092c1 to your computer and use it in GitHub Desktop.
redis-py の 3.0 以降に加わったコマンドへの対応について

redis-py の 3.0 以降に加わったコマンドへの対応について

3.0 以降に入ったコマンドやimprovement に対する対応が一切入っていない
皆それはわかっているが、patch が投稿されていないっぽいように見える

3.2 がそろそろ出るタイミングなので、いつまでもビルド環境が 2.8 なのもどうかと思う。
よって、redis-py で 3.0 以降に対応された機能の対応状況やビルド環境について調べ、patch をどう送るかを考える

3.0 以降の機能がPRされた例

GEO 関係のものがある。けど取り込まれていない。まぁそうか。
redis/redis-py#695

あんまし皆考えずに投稿しているっぽい。そんなもんだよねー。
2.8.9 以降でしかテストされていないように見えるので、実際やってみた上で、あげてみればいいじゃない、と思う

2015/12/27 現在取り込まれている機能には、3.0 以降のものは存在しない

mumumu@mumumu-W330SU2 05:10:41 ~/redis-py [travis_customize_test] $ ag skip_if
tests/conftest.py
34:def skip_if_server_version_lt(min_version):

tests/test_commands.py
13:from .conftest import skip_if_server_version_lt
62:    @skip_if_server_version_lt('2.6.9')
66:    @skip_if_server_version_lt('2.6.9')
156:    @skip_if_server_version_lt('2.6.0')
170:    @skip_if_server_version_lt('2.6.0')
189:    @skip_if_server_version_lt('2.6.0')
195:    @skip_if_server_version_lt('2.6.0')
203:    @skip_if_server_version_lt('2.6.0')
211:    @skip_if_server_version_lt('2.6.0')
222:    @skip_if_server_version_lt('2.6.0')
233:    @skip_if_server_version_lt('2.8.7')
246:    @skip_if_server_version_lt('2.8.7')
280:    @skip_if_server_version_lt('2.6.0')
388:    @skip_if_server_version_lt('2.6.0')
441:    @skip_if_server_version_lt('2.6.0')
450:    @skip_if_server_version_lt('2.6.0')
457:    @skip_if_server_version_lt('2.6.0')
462:    @skip_if_server_version_lt('2.6.0')
470:    @skip_if_server_version_lt('2.6.0')
476:    @skip_if_server_version_lt('2.6.0')
502:    @skip_if_server_version_lt('2.6.0')
508:    @skip_if_server_version_lt('2.6.0')
516:    @skip_if_server_version_lt('2.6.0')
523:    @skip_if_server_version_lt('2.6.0')
530:    @skip_if_server_version_lt('2.6.0')
535:    @skip_if_server_version_lt('2.6.0')
541:    @skip_if_server_version_lt('2.6.0')
716:    @skip_if_server_version_lt('2.8.0')
727:    @skip_if_server_version_lt('2.8.0')
737:    @skip_if_server_version_lt('2.8.0')
746:    @skip_if_server_version_lt('2.8.0')
754:    @skip_if_server_version_lt('2.8.0')
763:    @skip_if_server_version_lt('2.8.0')
771:    @skip_if_server_version_lt('2.8.0')
780:    @skip_if_server_version_lt('2.8.0')
856:    @skip_if_server_version_lt('2.6.0')
903:    @skip_if_server_version_lt('2.8.9')
956:    @skip_if_server_version_lt('2.8.9')
966:    @skip_if_server_version_lt('2.9.9')
1012:    @skip_if_server_version_lt('2.8.9')
1112:    @skip_if_server_version_lt('2.8.9')
1119:    @skip_if_server_version_lt('2.8.9')
1129:    @skip_if_server_version_lt('2.8.9')
1182:    @skip_if_server_version_lt('2.6.0')
1367:    @skip_if_server_version_lt('2.6.0')

tests/test_connection_pool.py
10:from .conftest import skip_if_server_version_lt
381:    @skip_if_server_version_lt('2.8.8')
393:    @skip_if_server_version_lt('2.8.8')
408:    @skip_if_server_version_lt('2.8.8')
423:    @skip_if_server_version_lt('2.8.8')

3.0 以降でのテスト

vagrant の redis_vars.sh のバージョンを任意のバージョンにして vagrant up すれば、それ向けの環境が作れる。
https://github.com/andymccurdy/redis-py/blob/master/vagrant/redis_vars.sh#L6

travis 経由でのCI はどうなの? 3.0 対応にする必要があるの?

現状のtravis の Redis の環境は 2.8.19 だった。

https://dl.dropboxusercontent.com/u/15537366/travis_current_redis_version.png

3.0対応にするには、travisのビルド環境を3.0以降にする必要がある。そうしないと Github に PR を作成しても 3.0 以降のテストが走らない。

ビルド環境が完全にアップデートされるまでは、3.0 に一時的に設定するアドオンがあった。これを使えば 3.0.6 でテスト可能

travis-ci/travis-ci#4811

実際3.0でテストしてみてどうだったの?

travis で 3.0.6 にしてテストを完全に通すことができた。

https://travis-ci.org/mumumu-test/redis-py/builds/98899930

また、Python 2.7 に限るが、vagrant でもテストを通すことができた。

結論

patches are welcome って作者が言ってるんだから、送ってみればいいじゃない。

redis/redis-py#603

以下のpatchはすぐにでも送れるので、やってみればいいんじゃないかな。

@mumumu
Copy link
Author

mumumu commented Dec 27, 2015

- 3.0 へのテスト環境のアップデート
- restore コマンドの replace オプション追加 

2つPRを送ったったわ(`ー´)
Mergeされるかはしらんけど。

redis/redis-py#697
redis/redis-py#698

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment