> On Nov. 29, 2016, 4:18 a.m., Joshua Cohen wrote: > > src/test/java/org/apache/aurora/scheduler/storage/db/InstrumentingInterceptorTest.java, > > line 46 > > <https://reviews.apache.org/r/54107/diff/3/?file=1571611#file1571611line46> > > > > You shouldn't need to create a mock of `FakeClock`, it's already itself > > essentially a mock. Instead, the generally usage is along the lines of... > > > > FakeClock clock = new FakeClock(); > > > > ... > > > > // advance the clock by 1 second > > clock.advance(Amount.of(1L, Time.SECONDS)); > > > > ... > > // Do some more work > > > > // Advance the clock some more... > > clock.advance(Amount.of(10L, Time.SECONDS)); > > > > ... > > // Reset the clock... > > clock.setNowMillis(0L); > > > > If you search through the codebase you should be able to find copious > > examples to crib from. > > Reza Motamedi wrote: > I am not sure if FakeClokc let me do what I want here. I want the clock > to advance inside the interceptors execution, i.e., first time nowmillis > called give me this, next time give me that. I aggree that I should just mock > a Clock, not a FakeClock.
Seems like the issue here is that the clock start and end times are both checked inside a method that is mocked. So to call clock.advance(...) in the manner described, the mock for Invocation.class would need to be replaced with a stub that contains a body that actually advances the clock. I think the mock is the better way to go. - David ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/54107/#review157197 ----------------------------------------------------------- On Nov. 30, 2016, 6:14 a.m., Reza Motamedi wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/54107/ > ----------------------------------------------------------- > > (Updated Nov. 30, 2016, 6:14 a.m.) > > > Review request for Aurora, David McLaughlin, Joshua Cohen, Mehrdad > Nurolahzade, and Santhosh Kumar Shanmugham. > > > Repository: aurora > > > Description > ------- > > MyBatis allows us to intercept calls within the execution of a mapped > statement. This allows us to time various mapped statements and ultimately > gain more insight on the performance of the database module. > > This patch introduces an interceptor on MyBatis on `updates` and `query` > mapped statements. I used the following convention to create name for the > newly collected stats: > mybatis.<<the id of the mapped statement>> > > After interception the process is very similar to the one in > @Timed-interceptor. SlidingStats can be used to export interval averages, > total milliseconds and the event counts. > > __example stats (from ./vars.json)__ > mybatis.create_tables_events 1 > mybatis.create_tables_events_per_sec 0.0 > mybatis.create_tables_nanos_per_event 0.0 > mybatis.create_tables_nanos_total 592633784 > mybatis.create_tables_nanos_total_per_sec 0.0 > mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.selectAll_events > 3 > mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.selectAll_events_per_sec > 0.0 > mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.selectAll_nanos_per_event > 0.0 > mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.selectAll_nanos_total > 2858362 > mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.selectAll_nanos_total_per_sec > 0.0 > mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.select_events > 333 > mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.select_events_per_sec > 0.0 > mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.select_nanos_per_event > 0.0 > mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.select_nanos_total > 85745680 > mybatis.org.apache.aurora.scheduler.storage.db.AttributeMapper.select_nanos_total_per_sec > 0.0 > > > Diffs > ----- > > src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java > e7287cec28e7b8ca978c506bfe821f261bc0ac26 > > src/main/java/org/apache/aurora/scheduler/storage/db/InstrumentingInterceptor.java > PRE-CREATION > > src/test/java/org/apache/aurora/scheduler/storage/db/InstrumentingInterceptorTest.java > PRE-CREATION > > src/test/java/org/apache/aurora/scheduler/storage/mem/InMemTaskStoreTest.java > 2e560c0d565689703b282391fe49dbf213ee25dc > > src/test/java/org/apache/aurora/scheduler/storage/mem/MemCronJobStoreTest.java > 79999e19454568540c14f91808635bf8dff82bb3 > > Diff: https://reviews.apache.org/r/54107/diff/ > > > Testing > ------- > > Tests are covered in InstrumentingInterceptorTest. > > - testStatIsCreatedOnce > Tests that each stat is created one time only. > > - testInterceptMarksMetrics > Tests that invocation is correctly intercepted and then proceeds. > > > Thanks, > > Reza Motamedi > >
