1010
1111import static org .junit .Assert .*;
1212
13+ import java .io .ByteArrayInputStream ;
14+
15+ import ch .ethz .seb .sps .domain .model .service .Session ;
1316import ch .ethz .seb .sps .integrationtests .ServiceTest_FULL_RDBMS ;
17+ import ch .ethz .seb .sps .server .ServiceConfig ;
1418import ch .ethz .seb .sps .server .datalayer .batis .mapper .ScreenshotDataRecordMapper ;
1519import ch .ethz .seb .sps .server .datalayer .batis .model .ScreenshotDataRecord ;
1620import ch .ethz .seb .sps .server .datalayer .dao .impl .S3DAO ;
1923import org .apache .ibatis .session .SqlSessionFactory ;
2024import org .junit .Test ;
2125import org .mockito .Mock ;
26+ import org .mockito .Mockito ;
2227import org .mybatis .spring .SqlSessionTemplate ;
2328import org .springframework .beans .factory .annotation .Autowired ;
29+ import org .springframework .beans .factory .annotation .Qualifier ;
30+ import org .springframework .scheduling .TaskScheduler ;
31+ import org .springframework .transaction .PlatformTransactionManager ;
32+
2433
2534public class ScreenshotS3FailTest extends ServiceTest_FULL_RDBMS {
2635
27- // @Autowired
28- // private ScreenshotStore_S3 screenshotStore_S3;
29-
30- // @Mock
31- // private S3DAO s3DAO;
36+
37+ @ Mock
38+ private S3DAO s3DAO ;
3239
3340 @ Autowired
3441 private SqlSessionFactory sqlSessionFactory ;
3542 @ Autowired
3643 private ScreenshotDataRecordMapper screenshotDataRecordMapper ;
44+ @ Autowired
45+ private PlatformTransactionManager transactionManager ;
46+ @ Autowired
47+ @ Qualifier (value = ServiceConfig .SCREENSHOT_STORE_API_EXECUTOR )
48+ private TaskScheduler taskScheduler ;
3749
3850 @ Test
39- public void testNoDuplicateScreenshotDataStoresOnS3Fail () {
51+ public void testNoDuplicateScreenshotDataStores () {
4052
4153 SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate (this .sqlSessionFactory , ExecutorType .BATCH );
4254
@@ -55,8 +67,38 @@ public void testNoDuplicateScreenshotDataStoresOnS3Fail() {
5567 }
5668
5769 Long num = screenshotDataRecordMapper .countByExample ().build ().execute ();
70+
71+ assertEquals (1 , (long ) num );
72+
73+ }
74+
75+ @ Test
76+ public void testNoDuplicateScreenshotDataStoresOnS3Fail () {
5877
59- assertTrue (1 == num );
78+ Mockito .when (s3DAO .uploadItem (Mockito .any (), Mockito .any (),Mockito .any ()))
79+ .thenThrow (new IllegalStateException ("Test: No space left" ));
80+
81+ ScreenshotStore_S3 screenshotStore_S3 = new ScreenshotStore_S3 (
82+ sqlSessionFactory ,
83+ transactionManager ,
84+ s3DAO ,
85+ taskScheduler ,
86+ 1000 ,
87+ false
88+ );
89+
90+ screenshotStore_S3 .init ();
6091
92+ screenshotStore_S3 .storeScreenshot ("session123" , 100L , Session .ImageFormat .PNG , "metadata" , new ByteArrayInputStream (new byte [] {1 , 2 }));
93+
94+ // wait some time
95+ try {
96+ Thread .sleep (2000 );
97+ } catch (Exception e ) {
98+
99+ }
100+
101+ Long num = screenshotDataRecordMapper .countByExample ().build ().execute ();
102+ assertEquals (1 , (long ) num );
61103 }
62104}
0 commit comments