2020import com .google .cloud .storage .BucketInfo ;
2121import com .google .cloud .storage .Storage ;
2222import com .google .cloud .storage .StorageException ;
23+ import io .cdap .plugin .gcp .gcs .actions .SourceDestConfig ;
2324import org .junit .After ;
2425import org .junit .Assert ;
2526import org .junit .Before ;
2627import org .junit .Test ;
2728import org .mockito .Mock ;
2829import org .mockito .MockitoAnnotations ;
29- import org .slf4j .Logger ;
3030
3131import java .io .ByteArrayOutputStream ;
3232import java .io .PrintStream ;
33+ import java .util .ArrayList ;
34+ import java .util .Comparator ;
35+ import java .util .List ;
3336
3437import static org .mockito .Mockito .any ;
3538import static org .mockito .Mockito .times ;
@@ -50,12 +53,20 @@ public class StorageClientTest {
5053 private final ByteArrayOutputStream outContent = new ByteArrayOutputStream ();
5154
5255 private final PrintStream originalOut = System .out ;
56+ private final List <String > blobPageNames = new ArrayList <>();
5357
5458 @ Before
5559 public void setUp () {
5660 MockitoAnnotations .initMocks (this );
5761 storageClient = new StorageClient (storage );
5862 System .setOut (new PrintStream (outContent ));
63+ // Setup blobPageNames
64+ blobPageNames .add ("mydir/test_web1/report.html" );
65+ blobPageNames .add ("mydir/test_web2/report.html" );
66+ blobPageNames .add ("mydir/test_web2/css/" );
67+ blobPageNames .add ("mydir/test_web2/css/foo.css" );
68+ blobPageNames .add ("mydir/test_mob1/report.html" );
69+ blobPageNames .add ("mydir/test_mob2/report.html" );
5970 }
6071
6172 @ After
@@ -144,4 +155,33 @@ public void testCreateBucketIfNotExists() {
144155 }
145156 Assert .fail ("Test for detecting bucket creation failure did not succeed. No exception caught" );
146157 }
158+
159+ @ Test
160+ public void testGetWildcardPathPrefix () {
161+ Assert .assertEquals ("mydir/test_web" , StorageClient .getWildcardPathPrefix (
162+ GCSPath .from ("gs://my-bucket/mydir/test_web*/" ), SourceDestConfig .WILDCARD_REGEX ));
163+ Assert .assertEquals ("" , StorageClient .getWildcardPathPrefix (
164+ GCSPath .from ("gs://my-bucket/*" ), SourceDestConfig .WILDCARD_REGEX ));
165+ }
166+
167+ @ Test
168+ public void testFilterMatchedPaths () {
169+ GCSPath sourcePath = GCSPath .from ("gs://foobucket/mydir/test_web*/*" );
170+ List <GCSPath > filterMatchedPaths = StorageClient .getFilterMatchedPaths (sourcePath , blobPageNames , false );
171+ filterMatchedPaths .sort (Comparator .comparing (GCSPath ::getUri ));
172+ Assert .assertEquals (2 , filterMatchedPaths .size ());
173+ Assert .assertEquals (GCSPath .from ("gs://foobucket/mydir/test_web1/report.html" ), filterMatchedPaths .get (0 ));
174+ Assert .assertEquals (GCSPath .from ("gs://foobucket/mydir/test_web2/report.html" ), filterMatchedPaths .get (1 ));
175+ }
176+
177+ @ Test
178+ public void testFilterMatchedPathsWithRecursive () {
179+ GCSPath sourcePath = GCSPath .from ("gs://foobucket/mydir/test_web*/*" );
180+ List <GCSPath > filterMatchedPaths = StorageClient .getFilterMatchedPaths (sourcePath , blobPageNames , true );
181+ Assert .assertEquals (3 , filterMatchedPaths .size ());
182+ filterMatchedPaths .sort (Comparator .comparing (GCSPath ::getUri ));
183+ Assert .assertEquals (GCSPath .from ("gs://foobucket/mydir/test_web1/report.html" ), filterMatchedPaths .get (0 ));
184+ Assert .assertEquals (GCSPath .from ("gs://foobucket/mydir/test_web2/css/" ), filterMatchedPaths .get (1 ));
185+ Assert .assertEquals (GCSPath .from ("gs://foobucket/mydir/test_web2/report.html" ), filterMatchedPaths .get (2 ));
186+ }
147187}
0 commit comments