@@ -688,37 +688,191 @@ static void test_cachedb_backends(void)
688
688
689
689
static void test_cachedb_url (void )
690
690
{
691
+ #define CDB_PARSE (__url ) db = new_cachedb_id(_str(__url)); if (!ok(db != NULL)) return;
691
692
struct cachedb_id * db ;
692
693
693
694
/* invalid URLs */
694
695
ok (!new_cachedb_id (_str ("d:g://@" )));
695
696
ok (!new_cachedb_id (_str ("d:g://u:@" )));
696
697
ok (!new_cachedb_id (_str ("d:g://u:p@" )));
697
- ok (!new_cachedb_id (_str ("d:g://u:p@h" )));
698
698
ok (!new_cachedb_id (_str ("d:g://u:p@h:" )));
699
699
700
- db = new_cachedb_id (
_str (
"redis:group1://:[email protected] :6379" ));
701
- if (!ok (db != NULL ))
702
- return ;
700
+ CDB_PARSE ("redis:group1://" );
701
+ ok (db -> flags == CACHEDB_ID_NO_URL );
702
+ ok (!strcmp (db -> scheme , "redis" ));
703
+ ok (!strcmp (db -> group_name , "group1" ));
704
+ ok (!db -> username );
705
+ ok (!db -> password );
706
+ ok (!db -> host );
707
+ ok (db -> port == 0 );
708
+ ok (!db -> database );
709
+ ok (!db -> extra_options );
710
+
711
+ CDB_PARSE ("redis:group1://172.31.180.127" );
712
+ ok (db -> flags == 0 );
713
+ ok (!strcmp (db -> scheme , "redis" ));
714
+ ok (!strcmp (db -> group_name , "group1" ));
715
+ ok (!db -> username );
716
+ ok (!db -> password );
717
+ ok (!strcmp (db -> host , "172.31.180.127" ));
718
+ ok (db -> port == 0 );
719
+ ok (!db -> database );
720
+ ok (!db -> extra_options );
721
+
722
+ CDB_PARSE ("redis:group1://172.31.180.127:6379" );
723
+ ok (db -> flags == 0 );
724
+ ok (!strcmp (db -> scheme , "redis" ));
725
+ ok (!strcmp (db -> group_name , "group1" ));
726
+ ok (!db -> username );
727
+ ok (!db -> password );
728
+ ok (!strcmp (db -> host , "172.31.180.127" ));
729
+ ok (db -> port == 6379 );
730
+ ok (!db -> database );
731
+ ok (!db -> extra_options );
732
+
733
+ CDB_PARSE (
"redis:group1://[email protected] :6379" );
734
+ ok (db -> flags == 0 );
735
+ ok (!strcmp (db -> username , "user" ));
736
+ ok (!db -> password );
737
+ ok (!strcmp (db -> host , "172.31.180.127" ));
738
+ ok (db -> port == 6379 );
739
+ ok (!db -> database );
740
+ ok (!db -> extra_options );
741
+
742
+ CDB_PARSE (
"redis:group1://:[email protected] :6379" );
743
+ ok (db -> flags == 0 );
703
744
ok (!strcmp (db -> scheme , "redis" ));
704
745
ok (!strcmp (db -> group_name , "group1" ));
705
746
ok (!strcmp (db -> username , "" ));
706
- ok (!strcmp (db -> password , "devxxxxxx " ));
747
+ ok (!strcmp (db -> password , "pwd " ));
707
748
ok (!strcmp (db -> host , "172.31.180.127" ));
708
749
ok (db -> port == 6379 );
709
750
ok (!db -> database );
710
751
ok (!db -> extra_options );
711
752
712
- db = new_cachedb_id (
_str (
"redis:group1://:[email protected] :6379/" ));
713
- if (!ok (db != NULL ))
714
- return ;
753
+ CDB_PARSE ("redis:group1://user:@172.31.180.127:6379" );
754
+ ok (!strcmp (db -> username , "user" ));
755
+ ok (!strcmp (db -> password , "" ));
756
+ ok (!strcmp (db -> host , "172.31.180.127" ));
757
+ ok (db -> port == 6379 );
758
+
759
+ CDB_PARSE (
"redis:group1://:[email protected] :6379/" );
760
+ ok (db -> flags == 0 );
761
+ ok (!strcmp (db -> username , "" ));
762
+ ok (!strcmp (db -> password , "pwd" ));
715
763
ok (db -> port == 6379 );
716
764
ok (!db -> database );
717
765
ok (!db -> extra_options );
718
766
719
- db = new_cachedb_id (
_str (
"redis:group1://:[email protected] :6379/d?x=1&q=2" ));
720
- if (!ok (db != NULL ))
721
- return ;
767
+ CDB_PARSE (
"redis:group1://:[email protected] :6379/d?x=1&q=2" );
768
+ ok (db -> flags == 0 );
769
+ ok (!strcmp (db -> username , "" ));
770
+ ok (!strcmp (db -> password , "pwd" ));
771
+ ok (db -> port == 6379 );
722
772
ok (!strcmp (db -> database , "d" ));
723
773
ok (!strcmp (db -> extra_options , "x=1&q=2" ));
774
+
775
+ /* multiple hosts tests */
776
+
777
+ CDB_PARSE ("redis:group1://h1,h2,h3" );
778
+ ok (db -> flags == CACHEDB_ID_MULTIPLE_HOSTS );
779
+ ok (!db -> username );
780
+ ok (!db -> password );
781
+ ok (!strcmp (db -> host , "h1,h2,h3" ));
782
+ ok (db -> port == 0 );
783
+ ok (!db -> database );
784
+
785
+ CDB_PARSE ("redis:group1://h1:1,h2:22,h3:333" );
786
+ ok (db -> flags == CACHEDB_ID_MULTIPLE_HOSTS );
787
+ ok (!db -> username );
788
+ ok (!db -> password );
789
+ ok (!strcmp (db -> host , "h1:1,h2:22,h3:333" ));
790
+ ok (db -> port == 0 );
791
+ ok (!db -> database );
792
+
793
+ CDB_PARSE ("redis:group1://h1,h2:22,h3:333" );
794
+ ok (db -> flags == CACHEDB_ID_MULTIPLE_HOSTS );
795
+ ok (!db -> username );
796
+ ok (!db -> password );
797
+ ok (!strcmp (db -> host , "h1,h2:22,h3:333" ));
798
+ ok (db -> port == 0 );
799
+ ok (!db -> database );
800
+
801
+ CDB_PARSE ("redis:group1://h1,h2:22,h3" );
802
+ ok (db -> flags == CACHEDB_ID_MULTIPLE_HOSTS );
803
+ ok (!db -> username );
804
+ ok (!db -> password );
805
+ ok (!strcmp (db -> host , "h1,h2:22,h3" ));
806
+ ok (db -> port == 0 );
807
+ ok (!db -> database );
808
+
809
+ CDB_PARSE ("redis:group1://h1,h2,h3:333" );
810
+ ok (db -> flags == CACHEDB_ID_MULTIPLE_HOSTS );
811
+ ok (!db -> username );
812
+ ok (!db -> password );
813
+ ok (!strcmp (db -> host , "h1,h2,h3:333" ));
814
+ ok (db -> port == 0 );
815
+ ok (!db -> database );
816
+
817
+ CDB_PARSE ("redis:group1://h1,h2,h3:333/" );
818
+ ok (db -> flags == CACHEDB_ID_MULTIPLE_HOSTS );
819
+ ok (!db -> username );
820
+ ok (!db -> password );
821
+ ok (!strcmp (db -> host , "h1,h2,h3:333" ));
822
+ ok (db -> port == 0 );
823
+ ok (!db -> database );
824
+
825
+ CDB_PARSE ("redis:group1://user@h1,h2,h3" );
826
+ ok (db -> flags == CACHEDB_ID_MULTIPLE_HOSTS );
827
+ ok (!strcmp (db -> username , "user" ));
828
+ ok (!db -> password );
829
+ ok (!strcmp (db -> host , "h1,h2,h3" ));
830
+ ok (db -> port == 0 );
831
+ ok (!db -> database );
832
+
833
+ CDB_PARSE ("redis:group1://user:pwd@h1,h2,h3" );
834
+ ok (db -> flags == CACHEDB_ID_MULTIPLE_HOSTS );
835
+ ok (!strcmp (db -> username , "user" ));
836
+ ok (!strcmp (db -> password , "pwd" ));
837
+ ok (!strcmp (db -> host , "h1,h2,h3" ));
838
+ ok (db -> port == 0 );
839
+ ok (!db -> database );
840
+
841
+ CDB_PARSE ("redis:group1://:pwd@h1,h2,h3" );
842
+ ok (db -> flags == CACHEDB_ID_MULTIPLE_HOSTS );
843
+ ok (!strcmp (db -> username , "" ));
844
+ ok (!strcmp (db -> password , "pwd" ));
845
+ ok (!strcmp (db -> host , "h1,h2,h3" ));
846
+ ok (db -> port == 0 );
847
+ ok (!db -> database );
848
+
849
+ CDB_PARSE ("redis:group1://h1,h2,h3/db" );
850
+ ok (db -> flags == CACHEDB_ID_MULTIPLE_HOSTS );
851
+ ok (!db -> username );
852
+ ok (!db -> password );
853
+ ok (!strcmp (db -> host , "h1,h2,h3" ));
854
+ ok (db -> port == 0 );
855
+ ok (!strcmp (db -> database , "db" ));
856
+
857
+ CDB_PARSE ("redis:group1://user:pwd@h1,h2,h3/db" );
858
+ ok (db -> flags == CACHEDB_ID_MULTIPLE_HOSTS );
859
+ ok (!strcmp (db -> username , "user" ));
860
+ ok (!strcmp (db -> password , "pwd" ));
861
+ ok (!strcmp (db -> host , "h1,h2,h3" ));
862
+ ok (db -> port == 0 );
863
+ ok (!strcmp (db -> database , "db" ));
864
+
865
+ CDB_PARSE ("redis:ha://localhost,host_a:6380,host_b:6381,host_c/db" );
866
+ ok (db -> flags == CACHEDB_ID_MULTIPLE_HOSTS );
867
+ ok (!strcmp (db -> host , "localhost,host_a:6380,host_b:6381,host_c" ));
868
+ ok (!strcmp (db -> database , "db" ));
869
+ ok (db -> port == 0 );
870
+
871
+ CDB_PARSE ("redis:group1://:pwd@h1,h2,h3:6379/d" );
872
+ ok (db -> flags == CACHEDB_ID_MULTIPLE_HOSTS );
873
+ ok (!strcmp (db -> username , "" ));
874
+ ok (!strcmp (db -> password , "pwd" ));
875
+ ok (!strcmp (db -> host , "h1,h2,h3:6379" ));
876
+ ok (!strcmp (db -> database , "d" ));
877
+ ok (db -> port == 0 );
724
878
}
0 commit comments