00:00:17.199
okay hi i'm javan
00:00:24.800
is it subtle gay yeah i'm a shirt of kumoi and i'm a livi
00:00:30.800
comida i'm also known as solar
00:00:38.480
this is a committed ranking of levy repository above today
00:00:46.879
i'm here i'm getting down and this is the party monster also known
00:00:53.760
as knob is here i i uh i think and i know anyone can uh
00:01:01.920
can't beat him and you know and where's max
00:01:09.040
okay there's nobody simply someone of committers wrote that
00:01:16.560
touched by yukihiro matsumoto into a changelog and committed
00:01:24.080
and this is my uh my twitter please follow me but please note that i'm tweeting
00:01:30.960
about uh 300 tweets in one day uh someone said
00:01:36.079
this help someone uh you are doing doing uh twitter so much uh
00:01:44.079
but my timeline is uh i love your tweet and she is salami uh she's first name is
00:01:51.280
similar to my nickname but she's not me you know
00:01:57.600
what there's available here okay uh today i'm gonna talk about first
00:02:03.840
thing but before starting the power talk i have to say this thing but
00:02:09.280
you know my english skill is unknown so please ignore uh however i said
00:02:15.360
song strange included english next if you want to listen to general
00:02:21.280
news around my ruby 1.9.3 and the future of lily i strongly
00:02:27.840
recommend you to move to room 2 right now
00:02:32.959
i want to listen to though that but i can't
00:02:38.160
because it's conflicting with my talk it's myself to solve
00:02:44.800
last uh all will be in this talk means uh max will be implementation
00:02:50.080
also known as the silvery okay i missed the scheduling of uh
00:02:57.519
talking at luvigagi i think it will not happen today but i missed it athletic player flipping
00:03:04.640
time scheduling to play for the stock i've loaded all at uh slides
00:03:10.800
of this uh at all at yesterday 10 pm and i added some slides today because
00:03:21.360
i think i left some time to
00:03:26.400
sometime or some left many times
00:03:33.120
and after i ended my slides all over okay today i'll talk about these things uh
00:03:40.400
wi-fi testing and multi-slide mouse process and testing testimony parallelization
00:03:46.560
and how it works and how its performance changes
00:03:52.159
first uh wi-fi testing
00:03:57.519
cell testing benefits is here first in most cases we can learn test more
00:04:04.720
faster it means you can develop with clusters and speed in
00:04:10.400
tdd or vdd development
00:04:19.600
that is unique testing uh too long to learn you
00:04:25.280
need lives with any testing to
00:04:33.199
make target if you are committed to repository
00:04:40.240
faster testing test make developers more happy guess this is the example of development
00:04:46.560
cycles uh if you have slow tests first yeah you
00:04:52.160
implement some new feature or bug fixing
00:04:57.919
then you you learn test and check it process or it fails
00:05:03.199
but if test is slow you have to wait a long time this is also known as break time
00:05:13.039
and after that clone break use the red sentence means the test is failed
00:05:21.199
then you will fix the code and then we
00:05:26.560
learn the test as i said this this is very slow
00:05:32.240
you go to the second block this is also known as blade time as i
00:05:38.560
said
00:05:45.440
if you have a fast test first implement a new future
00:05:50.479
and learn the test and you can see a level with the first shorter time
00:05:56.000
and fix the impact is now perfect
00:06:01.199
you can now commit and push to the repository third best benefit is you can fix
00:06:07.840
failures with showtime periodization is the easiest way to
00:06:13.520
learn tests in showtime
00:06:18.720
i think some people have a question so here now uh in a little bit uh some changes uh
00:06:24.720
make make some uh some failures on another point uh so
00:06:30.400
long all tests at each commit is a recommended
00:06:36.720
this is a real-world example to make learning tests in showtime a quick but the most popular hp sharing class
00:06:44.080
in japan using ruby and lays first they used a power test that
00:06:50.400
parallel testing library for arabic the tests run faster than without
00:06:57.360
parallel tests but it still takes three minutes and half
00:07:02.960
is so long they try to land tests on remote machines which have a high performance
00:07:11.360
they have forced over to me to have very high performance they should use these
00:07:17.520
servers to learn this it's so high performance it's so expensive
00:07:23.840
they load the in-house library and it can learn by late tasks
00:07:29.440
first the library sends local code to remote server by other things to run test
00:07:35.120
then land tests and get output via ssh
00:07:41.759
okay i am not 19.2 times faster
00:07:47.120
parallelization is great thank you cookbot and uh tatino to allow
00:07:52.960
me to use this example
00:07:58.800
okay uh summary of benefits is soft status make development faster
00:08:04.720
and it means deployment faster so how we can learn the test in showtime
00:08:14.879
there are two ways to realize that and today i'll talk about parallel testing that is easiest way to learn
00:08:22.479
tests faster practicing
00:08:28.319
recently machines have multiple uh slits uh
00:08:33.360
anyone using uh anyone uh still using a single combustion in
00:08:38.640
in here maybe a thumbs okay no people
00:08:48.640
okay next and currently louis doesn't land by
00:08:54.399
because of some problem so learning about multiplayer through
00:09:02.399
tests using a slate class in ruby doesn't make sense
00:09:08.800
this is the installation of louis plate the bislet can
00:09:15.519
learn multiple slits at once
00:09:21.760
and this is the multiple process your machine's operating system may ground multiple processes at once and if
00:09:29.920
you have a multiple cores or a threat this is the difference between multiple
00:09:36.160
fluid processes and ruby level threats in this illustration test is
00:09:43.440
for process that testing and other is other any process like shell or
00:09:52.399
shell or browser or any next i'll talk about test uniform
00:09:59.920
relation that is the first vlogging by me this is not taking more long
00:10:05.760
time is left uh 30 minutes quantity
00:10:10.880
okay i think recently aspect is popular testing framework in movies so many people don't know testing it uh how many
00:10:18.560
people don't know a testing it is standard with ruby
00:10:24.959
do you know tesla test unit
00:10:30.560
oh it's not good i'm using uh r spec for my playback
00:10:36.560
private project i don't use testing it for my private
00:10:46.000
okay i like modifying luis g implementation uh i so i love some patches and land tests
00:10:53.200
but my machine is very slow so i wanted to make this test
00:11:00.079
test make target to test ruby has that name testo the more fast more and more
00:11:06.880
pressure i'll describe how the patch works and before but before this claim i have to
00:11:13.360
tell some tell some words to be used master is a process that
00:11:22.320
process the set first this process sends a instruction to uh
00:11:29.920
to work out master is a ruby process that started by
00:11:36.320
make targets was on and worker is a process that started by
00:11:43.600
a master process this process awaits instructions from
00:11:49.600
master process uh instruction is like a land this a test test
00:11:59.120
or some and that will get a long test
00:12:07.200
okay let's see how it works first user stats and master process by like make
00:12:14.639
test all next master process and the work processes
00:12:21.600
then master clauses send the given text name file names to workout sources
00:12:31.040
after work our leader test file work outlines uh test included in the file
00:12:38.959
and down the test result to master process finally master process sends another
00:12:46.000
test file name to remaining text files file names to workout process and start
00:12:53.120
from step 4 again repeat this
00:12:58.720
until the test file limit is leaving
00:13:04.079
okay this feature use standard input and output to communicate between workout
00:13:10.800
process and master process
00:13:15.839
aspects of parallel tests use
00:13:21.200
canal fork to start out on starter worker
00:13:27.040
but but i can't because test unit is used as ruby and
00:13:34.160
windows doesn't doesn't support folks i said
00:13:41.360
can i use folk but windows maintain a photo maintainer
00:13:46.639
with redundant if if this future doesn't work at windows
00:13:52.399
i'll reject it windows should not support it by
00:13:58.720
but i can't and this uh and this
00:14:04.880
feature parallelize each test file so you have to separate test files and test case
00:14:14.720
this is the illustration of learning steps first
00:14:20.240
user set the master process next master process starts work
00:14:27.199
with specified numbers of workers
00:14:32.399
using the iop open method this future use iop open methods
00:14:38.480
because windows doesn't have fork as i next said
00:14:43.839
workout process are sends test file names of tests to workout sources
00:14:51.760
workout process with test files from file system
00:14:58.160
and workout process lens test
00:15:03.680
finally workout return the result to master process and write next
00:15:09.040
file file name
00:15:14.160
and the master must send a remaining test file name to worker
00:15:21.760
and work out lands again and if there are no remaining test files
00:15:28.480
a master sends quit instruction to workers
00:15:34.160
and worker sends by instruction to master
00:15:39.600
and quits in default if there are any little contains
00:15:45.680
uh more than one fellows master process will utilize a failed
00:15:50.880
test on itself
00:15:56.800
there no pillars i i did i
00:16:02.480
implemented uh this little future because uh i can't uh
00:16:10.480
some tests uh still have issues to
00:16:15.600
uh to run in without parallelization
00:16:23.040
and then merge the layers and shows show to user via a standard output
00:16:30.720
okay this is all of mechanisms of this feature it works well but
00:16:36.639
in libya repository scientists don't consider about the population
00:16:43.279
this is not bad because of their parallelization in future
00:16:48.480
i fixed some tests in some bugs in tests by myself
00:16:55.360
okay i i found out issues in this data file in ruby
00:17:02.079
first test signal rv this is test around uh signal handling of ruby
00:17:09.120
this test the kernel forks method to check fork is implemented in this ruby because windows
00:17:16.799
doesn't have a fork method of their save when fogged processed are quitting
00:17:22.880
at exit hook at test unit kicked each time
00:17:27.919
it makes results outputting some strange so i either added that flag to testing
00:17:34.799
it at exit hook if the flag is true exist from the hook
00:17:39.840
as part of the hook and a
00:17:45.360
flag will be turned to turn to b2 uh if uh land uh
00:17:52.960
land more around one time okay next is the
00:17:59.280
test process lb this test modifies the standard input and output
00:18:04.799
this user used standard and input and output so i modified testonitomo worker
00:18:10.880
script named test unit parallel dot rb to duplicate
00:18:16.320
standard input and output before round test and workout process
00:18:23.039
and test http and https the test
00:18:29.919
net http library
00:18:36.640
use same port number and test i fix the port number to be
00:18:43.120
to be to be unique
00:18:50.880
i think the port number to be unique but fixed is committed by before i commit by uh committed by
00:18:58.240
another committer test csv uh use same
00:19:03.760
uh temporary directive name and they delete templates directly
00:19:09.120
in teardown phase so under test there is a template directly
00:19:15.200
so it will be a like this
00:19:23.200
no such file or directory error is recorded in result
00:19:29.760
so i'll rename the template directly names in the tests to be unique each test in
00:19:35.679
test csv okay this is the last issue
00:19:41.840
test of lobby games some tests of movie games forgot lighting
00:19:47.200
dependent files dependence dependency is a file should be required before running tests
00:19:55.280
if there are test a and test b script and the library name there are four dots
00:20:01.520
are b and test a and test b depends on food rb
00:20:07.280
test a includes regulating foo but test b doesn't
00:20:15.919
when learned this test without the parallelization it'll be no errors
00:20:22.240
because who is already required in same ruby process
00:20:27.840
but when using a parallelization it will be an error
00:20:33.280
because who is loaded um one will be processed but it is not required in other one to
00:20:40.000
be processed i'm fixing iui hand and i've found only in lubby
00:20:47.200
games this currently i don't know why but this case can be found in
00:20:54.080
any test but i found this currently founded in louis james tests only
00:21:00.880
okay to uh this is the message is uh to louis james developers
00:21:06.240
please match uh revision three three two three two uh in ruby into your gate repository and
00:21:13.600
slowly if the touch has always merged if you alignment please close the ticket thank you
00:21:21.360
okay i tell you a message to the beginning table will be james developers ah
00:21:26.400
in here anyone will begin uh developer of the museum louisiana
00:21:33.039
okay no one uh someone uh to tell this uh
00:21:38.159
instead of me uh how's the performance uh um the
00:21:44.720
message was one of important things in my talk but um no regimes developed in here seems um
00:21:53.840
okay how's uh performance changed without power transition and without
00:21:58.880
parallelization akin to mulatto also known as mlckn
00:22:05.120
molokem he measured a playful time of both and created a performance graph he
00:22:12.240
will talk at the last session of loom2 about the release number system
00:22:17.440
around the road i think it's one of the important thing if you are interested in
00:22:22.799
lubi's future if you are in uh i i i think after like
00:22:28.240
this slide uh uh i think you are not here if uh you are
00:22:34.400
interested in living future because louise future uh talk is uh
00:22:39.919
learning current learning on loom2 okay this is the environment that
00:22:46.720
measured performance shown here
00:22:51.919
and this is a graph band name single is level of wizard parallelization and
00:22:58.400
looks uh like amazingly faster to
00:23:04.720
this is a little as shown as the exact number test test take 121.4.49
00:23:14.159
seconds without polarization but it will be
00:23:19.880
43.41 seconds with enabling
00:23:25.440
polarization amazingly fast 2.9 and
00:23:32.640
79 times more faster than without polarization
00:23:39.600
everything we passed okay last is how to use this but i have to
00:23:49.120
plan some demonstration before i describe it
00:24:13.279
okay
00:24:30.000
this is our tested learning
00:24:40.320
oops okay
00:24:48.240
is there any
00:24:54.080
oops
00:25:05.520
oops uh i
00:25:11.520
i want to show uh test is parallelized
00:25:17.440
but i can see the oh
00:25:23.840
this uh in this uh lines uh
00:25:30.080
uh cj cookie test and uh benchmark uh vm test
00:25:36.080
is learning power reality because uh it's shown uh
00:25:46.799
output from workers
00:25:52.240
this is uh if not using a polarization this will be
00:25:58.159
one test case this class name in one on is one atoms
00:26:06.480
and this is one this is the more one
00:26:11.600
benefit of testing prioritization uh
00:26:18.960
with in result of parallelization as shown here starting is very slow because uh
00:26:26.640
test unit with without preparation is uh load first require first
00:26:33.679
require first all of test files so if uh
00:26:40.240
stats slow by
00:26:45.440
visualization because liquiang is slow
00:26:51.039
in this in with uh in in uh enabling uh parallelization uh it will
00:26:57.760
the uh test will be start fast uh because uh requiring requiring uh test
00:27:03.679
files will be defiled okay let's back to uh how to use it
00:27:12.720
okay uh how to use class super test case to
00:27:20.640
multiple file and next we write script to learn multiple text file is using a test unit
00:27:28.960
outliner uh the scripts good example is ruby's test lana
00:27:34.159
dot i'll be in louisville's repository next lanza's clipped with argument uh
00:27:41.679
high jr j option and
00:27:46.840
visa number of number of workers learning the script with
00:27:54.399
help provides more information
00:28:00.399
and the patch made me a committer of ruby i was very happy then
00:28:09.120
okay that's all uh before i have um
00:28:15.120
i finished the flashlight i have one announcement lui 1.9.3
00:28:21.840
uh release candidate one has been released you can use parallelization by installing this and let's try it and
00:28:29.120
tell us if you found a bug more about it is available at
00:28:34.240
www.libbyhathonline.org okay
00:28:39.919
any question over there
00:28:47.440
you've made a really compelling uh case for parallel testing how do we get developers to actually do that
00:28:53.760
uh without like forcing them
00:29:10.799
uh
00:29:24.159
many developers don't if you don't use this feature but some computers are
00:29:31.200
using the future including me
00:29:37.200
some some committees i think they are thinking
00:29:42.399
this future is still unstable but it is working stable
00:29:48.799
please use it okay
00:29:54.080
okay uh currently this only works with test unit do you think it will be possible to make work with our spec too
00:30:02.320
i think have already uh generated plugging uh i'm not thinking quantity
00:30:11.760
any other nope
00:30:18.720
okay
00:30:34.559
this is a gift from japan the final will be teacher
00:30:40.559
if you wanted this uh please come here and take it
00:30:48.559
okay attention available in here
00:31:38.240
you