►
From YouTube: Ceph Developer Monthly 2021-08-04
A
Okay,
so
hello,
everyone,
my
name,
is
shreya
sharma
and
I'm
a
gsoc
intern
with
the
dashboard
team.
For
the
past
two
months,
I've
been
working
on
the
project
reporting
sufficient
from
the
safe
dashboard.
The
problem
statement
was
that
when
a
safe
user
encounters
an
issue,
they
gathered
all
the
relevant
information
and
reach
out
to
the
developers
using
either
the
mailing
list,
or
they
file
an
issue
with
the
self
issue
tracker.
A
The
problem
with
this
approach
is
that
out
of
the
users
facing
this
issue,
some
of
them
opt
out
of
reporting
it
due
to
inconvenience
and
out
of
the
users
that
do
report
the
issue,
but
all
of
them
get
a
reply
back
well,
as
we
can
see
in
the
funnel
diagram
that
already
out
of
the
users
that
faced
an
issue
most
of
them
reached
out,
but
out
of
them
only
some
like
most
of
them
get
a
response
back
either
from
the
developers
or
from
the
users
and
even
out
of
those.
A
A
A
So
this
would
widen
the
funnel
as
it
would
be
convenient
for
users
to
report
issue.
So
we
expect
more
people
to
report
issues
now.
This
will
also
provide
less
engines
while
working
since
they
don't
have
to
you
collect
the
information
from
terminal
and
you
like
go
to
gmail
or
they
prefer
or
send
an
email
file
in
issue
tracker.
They
can
simply
report
the
issue
from
the
cli
itself
or
the
safe
dashboard.
A
This
would
also
mean
ultimately,
a
better
experience
and
to
report
an
issue.
We
take
the
bare
minimum
information
required
to
report
it.
That
is
the
project
name
where
they
encountered
the
bug
or
the
feature
request
they
have
for
the
project.
The
tracker
type,
which
is
a
bug,
feature
the
subject
and
the
description
of
the
issue.
A
A
So
for
this,
our
initial
approach
was
to
use
the
python
redmi
library,
but
after
the
research
we
found
out
that
it
is
not
available
in
saint
os.
It's
not
a
package
there,
so
we
decided
to
go
for
thor
requests
but
even
like
the
selfish
tracker
is
based
on
red
mine
and
is
well
documented,
but
even
the
curl
calls
that
were
given
in
the
documentation
did
not
work
when
I
tried
them
using
the
current
calls.
A
All
I
got
was
server
and
I
was
not
able
to
track
down
the
problem,
so
I
so
our
mister
suggested
me
to
use
wireshark
what
we
did
was
we
create
a
center
python
redmine.
We
use
this
library
to
send
a
request
to
create
an
issue
and
we
try
to
fire
fireshark
to
lock
the
request,
but
python
redmine
library
does
not
let
us
use
the
http
request
and
https
request
would
be
encrypted.
So
we
were
not
able
to
use
viral
shark
either,
but
ultimately
we
found
some
python
logging
libraries
that
we
used.
A
A
Then
a
prerequisite
for
filing
an
issue
is
an
account
on
the
safe
issue
tracker
like.
Ideally,
it
would
be
better
if
we
do
not
ask
the
users
to
create
an
account
on
the
safe
issue
tracker,
but
the
main
reason
that
we,
authentic,
like
we
verify
the
account,
is
to
avoid
spamming.
So
we
require
the
user
to
give
issue
tracker
api
key
to
avoid
spamming
and
to
authenticate
the
user
when
the
request
is
sent,
so
they
must
have
an
account
of
the
sufficient
tracker.
A
Well,
so
we
have
two
options
to
report
issues
the
cli
and
the
dashboard
user:
the
interface
using
this
fcli.
We
first
set
the
api
key
using
the
command
set
dashboard,
set
safe,
tracker,
api
key
and
then
giving
the
file
name.
Where
the
api
key
is
stored.
We
can
then
create
an
issue
using
this
command
safe,
dashboard
feedback
create.
We
would
then
give
project
name,
tracker
type,
subject
and
description.
This
is
an
example
and
we'll
be
having
a
look
at
the
live
demo
soon.
A
Then
we
have
the
dashboard
user
interface
in
which
the
user
can
go
to
settings
and
he
would
have
an
option
to
raise
an
issue
when
he
clicks
on.
There
is
an
issue
he'll
be
presented
with
this
model,
so
he
has
to
select
the
project
name
from
the
list
of
drop
down
project
names.
He
will
select
the
tracker
name
from
the
list
of
drop
down
trackers,
which
would
be
bargain
feature
he
has
to
get
the
subject
and
the
description
also.
A
A
A
A
A
A
The
future
scope
of
this
project
is
the
ability
to
attach
images.
If,
let's
say
a
user
is
encountering
a
bug
or
an
other
that
he
did
not
expect
in
the
terminal,
so
he
should
be
able
to
add
attach
it
with
the
issue.
We
also
want
to
give
the
user
an
option
to
give
description
from
a
file.
A
Let's
say
the
description
is
mighty
liner,
so
it
would
be
easier
for
the
issuer
to
pass
the
file
name,
as
it
would
be
easier
for
user
to
pass
the
file
name
as
an
argument
to
take
the
description
for
there,
and
we
can
also
add
the
duplicacy
to
it
using
the
python.
What
do
you
mean
plugin,
which
is
a
plugin
for
that
mine?
A
B
C
This
looks
great,
I'm
really
excited
about
this.
I'm
curious
if
there's
a
way-
maybe
maybe
more-
of
a
security
issue,
but
first
just
to
kind
of
have
a
pre-installed
redmi
key
that
folks
could
use
that
they
would
not
need
to
create
their
own
tracker
account.
A
D
B
We
could
provide
an
anonymous
or
a
public
api
key.
Let's
see
that
that's
it's
linked.
Probably
we
will
start
having
the
you
know,
classical
spam
attacks
that
we
had
in
the
past,
but
maybe
we
can
update
that.
I
mean
on
a
regular
basis,
just
away
that
or
but
definitely
I
think
it
would
be
great
for
every
user
to
be
able
to
report
this
without
and
having
to
go
through
the
process
of
creating
an
account
getting
approval
and
so
on
so
yeah.
C
E
G
Well,
it's
that's
right,
but
it
is
the
key
that
is
that
we
embed,
I
mean
you
need
to
have
that
key
embedded
somewhere
right.
You
know
for
the
for
the
dashboard
to
use
it.
G
If
that
key
leaks,
and
then
you
know,
we
would
basically
need
to
disable
it,
and
until
everybody
is
upgraded,
it
would
be
just
plain
impossible
to
create
an
issue
by
the
dashboard
which
is
probably
worse
than
you
know,
not
having
the
functionality
in
the
first
place,
because
when
the
report,
the
issue
button
doesn't
work,
the
user,
who
is
already
you
know,
suffering
from
their
question
misbehaving,
would
be
even
more
pissed
off
than
before.
G
So
I
I,
I
think
that
maybe
we
could
do
something
smart
there
and
kind
of
require
like
find
a
way
to
verify
that
the
issue
is
coming
from
the
dashboard
instance
that
is
backed
by
a
real
cluster
like
with
some
entropy
there.
G
But
there's
still
like
an
issue
that
the
the
the
the
key
is
still
going
to
be
embedded
and
we
will
still
need
to
you
know,
have
a
way
to
secure
it,
because
otherwise,
eventually
we
would
get
spam
because
people
like
we
get
spam
even
in
the
downstream
issue
reporting
systems.
G
So
people
actually
do
like
register
and
go
through
the
process
of
you
know,
setting
up
the
account
which
is
much
more
cumbersome
than
than
creating
a
sec
tracker
account
and
we
still
get
spam
there.
So
I
need
to
be
careful.
D
I
wonder
if
obfuscating
the
key
at
some
level
would
be
sufficient.
I
mean
I.
I
would
assume
that
most
of
these
places,
where
they're
trying
you,
when
they're
spamming
to
redmine
they're,
probably
like
searching
for
any
redmine
instance,
that's
open
or
they're
searching
for
red
nine
keys.
But
if
it's
obfuscated
such
that
they
actually
have
to
decipher
and
reverse
engineer
some
code
instead,
specifically
in
order
to
spam
to
specifically
the
set
tracker
that
might
be
sufficient
to.
G
You
know
the
fact
that
it
wouldn't
be
just
be
just
obfuscated,
but
also
like
in
order
to
de-obfuscate
it.
You
actually
need
like
a
work
in
that
cluster,
like
you
know,
and
not
just
not
just
a
dummy
deadboard
instance,
or
something
like
that.
That
would
probably
be
enough.
D
Yep
I
have
like
two
small
comments.
This
looks
great,
but
the
dialogue
where
you
actually
submit
the
issue.
The
description
should
probably
be
a
text
box
instead
of
just
a
single
line,
so
you
can
actually
have
a
virtuous
description
yeah
that
one
and
then
also
once
it's
successfully
submitted,
instead
of
just
showing
the
issue
number,
it
could
just
link
to
the
tracker.
H
I
would
add,
it
might
be
worth
to
add
the
source
so
that
we
know
on
our
side
how
many
users
actually
use
this.
H
C
H
Yes,
so
at
the
back
end
of
redmine,
we
can
create
a
unique
source
for
this
specific
type
of
issue
creation,
which
means
it
comes
either
from
the
cli
or
the
dashboard
in
an
automated
way,
and
then
we
can
pre-populate
it
in
your
project
and
when
the
issue
is
created,
you
can
see
and
in
red
mine
issue
itself
the
source
field
populated,
and
we
can
choose
a
name
for
it.
I
don't
have
a
good
idea
now.
A
H
Yes,
that'd
be
a
great
indication
to
see
my
real
data,
so
yeah.
A
Just
adding
two
years,
if
we
are
pre-populating
the
data,
then
since
we
are
doing
that
from
cli,
we
can
also
like
I
mean
this
project
only
integrate
like
the
system,
specific
things
of
the
user
and
maybe
the
core
dump
or
some
stuff
related
to
debugging.
A
That
might
be
helpful
automatically
for
in
a
formatted
way,
read
mind
and
like
here
we
said
that
we
can
have
a
specific
field
for
this
project
in
tracker,
and
maybe
we
can
streamline
the
input
better.
A
That
way,
spamming
could
be
avoided
as
well
and
have
the
user
define
the
and
describe
the
problem
along
with
all
the
metadata
that
might
be
useful
for
a
developer
to
investigate
the
bug.
E
H
And
just
to
reiterate,
seiju
also
mentioned
that,
in
the
comments
it'll
be
great
to
add
the
affected
version
for
that
specific
issue.
This
way
it
makes
it
more
informative
for
the
developers
to
understand
so.
H
I
have
just
another
quick
question:
please
I
put
in
the
chat
the
link
to
the
python
redmine
project.
I'm
just
curious.
If
this
is
the
library
that
did
not
work
well
with
standards
for
you.
H
What
what
centos
version
was
that
I
need
to
do.
B
H
B
B
I
have
a
question
and
well
it's
not
only
for
serious
for
everyone
based
on
the
reception.
From
this
feature,
I
was
wondering
if
it
would
make
sense
to
move
part
of
the
functionality
to
a
separate
module
or
something
because
right
now,
this
would
require
the
dashboard
to
be
running
and
I'm
wondering
if
it
would
make
sense
for
users
not
running
the
dashboard
to
still
be
able
to
report
issues
so
maybe
having
some
of
this
functionality
in
a
standalone
module
and
the
dashboard
just
consuming
the
cli
interface
or
something.
I
Okay,
so
my
name
is
aryan
and
I'm
I
I've
been
working
with
steph
under
google
summer
of
code
for
the
past
three
months,
and
I
was
my
project
was
visual
regression
testing
of
dashboard,
so
today
we're
gonna
discuss
like
so.
This
is
what
we
are
going
to
discuss
today.
We
are
going
to
discuss
types
of
testing
and
we
are
using
in
this
what
we
are
already
using
in
the
safe
dashboard
and
even
even
after
we
have
like
all
these
kind
of
testing.
Why
do
we
need
a
more
yes.
I
And
yeah,
so,
even
if
we
have
all
these
already
existing
testing,
why
do
we
need
more
tests
and
the
work?
And
what
exactly
is
visual
impression,
testing
the
workflow
for
it
and
the
different
tools
available
for
it?
The
criteria
I
use
to
select
the
best
tool
for
this?
Have
dashboard
and
we'll
discuss
the
most
popular
tools
and
why
they
are
not
why
some
of
them
are
not
useful
and
we'll
discuss.
Pixel,
graphics,
bitmap
matching
the
algorithm
how
it
works.
I
Three
kind
of
tests
we're
using
give
me
a
second
in
my.
I
Yeah
so
currently
in
the
safe
dashboard,
we're
using
three
kinds
of
testing
we're
using
at
the
bottom
we're
using
unit
testing,
and
it's
really
good.
If
you
want
to
test
small
functions
and
small
components
and
unit
tests,
should
focus
only
on
the
described
purpose
and
shouldn't
try
to
test
other
things
in
the
same
blocks
and
yeah
we're
using
on
the
second
level
we're
using
integration
testing
where
we
combine
all
these
unit
tests
and
see
how
they
work
together.
I
Also,
the
test
should
verify
that
certain
items
are
displayed,
as
a
user
would
see
them
when
clicking
through
the
ui,
but
this
is
where
it
fall
sometimes
falls
behind
yeah.
So,
instead
of
dashboard,
we
already
have
this
whole
testing
therapy
setup
and
running.
But
the
question
is:
why
do
we
need
visual
regulation
testing?
I
B
B
I
Now
sorry
for
that
yeah
yeah
I'll
just
begin
from
here,
so
instead
we
already
have
this
whole
testing
limit
that
we
see
here.
So
the
question
is:
why
do
we
need
visual
regression
testing?
So
the
first
thing
is
visual.
Bugs
are
changing
issues
and
rendering
violation
is
not
what
functional
testing
tools
are
designed
to
catch
function,
testing
measures,
functional
behavior
and
that's
what
it
does
so.
Visual
regression
testing
also
helps
us
in
picking
up
css
bub,
which
we
don't
have
any
testing,
for.
I
It
also
helps
us
in
it's
also
where
sometimes
user
is
not
able
to
see
critical
buttons
or
are
they
or
they
are
in
on
unclickable
positions
and
stuff.
The
other
thing,
the
other
very
useful
feature
of
this
kind
of
testing
is.
It
helps
us
in
making
very
informed
decisions
on
breaking
changes
like
when
you
have,
when
you're
doing
large,
refactoring
or
just
upgrading
frameworks
or
libraries
which,
when
you're
moving
from
bootstrap
v4
or
to
these
bootstrap
files
and
stuff.
I
Let's
look
at
some
of
the
examples
here
in
the
first
image
we
have,
we
can
see
that
the
login
page
is
awkwardly
positioned.
This
is
a
css
buck,
resulting
in
a
user,
possibly
not
being
able
to
access
the
elements,
but
this
will
pass
all
our
all
our
testing
pyramid,
like
all
the
tests,
because
the
elements
are
still
existing
and
the
second
image
is
of
the
official
material
gui
website.
Material
ui
is
a
very
well
very
popular
ui
framework
developed
by
google.
I
I
This
is
the
breaking
change,
so
it's
really
good
for
that.
So
to
understand
now,
let's
move
ahead
and
understand
what
visual
regression
testing
is
so
to
understand
what
visual
diction
testing
is.
We
need
to
first
understand
what
regression
testing
is.
The
regulation
testing
is
used
to
verify
that
any
system
changes
do
not
interfere
with
the
existing
features
and
our
code
structure
is
the
reason.
Recreation
testing
is
a
part
of
almost
every
two
suite
in
software
development.
I
It
is
common
for
devs
to
change
and
change
or
add
a
section
of
code
that
and
having
it
unintentionally
disrupt
something
that
was
previously
working.
Just
fine
visualization
testing
applies
the
same
logic,
but
confines
testing
to
the
visual
aspects
of
the
software.
So
only
the
visual
aspect,
in
other
words
it.
It
checks
that
the
code
changes
do
not
break
any
aspect
of
the
code
of
the
software's
visual
interface.
I
A
visual
regression
test
checks
also
checks
that
the
user
see
will
see
what,
after
any
code,
changes
have
been
executed
by
comparing
screen
shots
taken
before
and
after
the
code
changes.
This
way,
yeah.
Okay.
So
now,
let's
talk
about
how
visual
the
regression
tests
generally
work,
so
the
work
of
the
workflow.
For
that
usually
looks
like
this.
I
You
initially
run
the
tests
and
since
you
already
don't
have
any
existing
snapshots
in
your
code
base,
you
go
here
and
you
take
new
screenshots
and
the
screenshot
will
generate
fast
with,
but
because-
and
these
state
is
called
as
baseline
screenshots
and
whatever
snapshots
you
capture
here,
when
we
consider
baseline
screenshots
then
to
test,
then
you
run
the
tests
again
when
in
like
in
your
in
your
feature,
branch
or
something,
whenever
you're
making
a
change
to
the
code
piece,
you
run
the
test
again,
it
captures
the
screenshots.
I
So
now,
let's
talk
about
the
different
tools
you
can
use
for
visualization
testing.
There
are
plenty
of
tools
you
can
find
on
the
internet
to
implement
these
tests
and
to
select
one
two
for
the
step
dashboard.
I
have
to
come
with
come
up
with
a
robust
criteria,
so
this
is
the
criteria
I
came
up
with
there,
so
the
criteria
is,
it
has
to
have
like
minimum
manual
effort,
easy
cyprus
integration,
because
that's
what
we're
using
entirely
for
our
end-to-end
testing
it
should
be.
I
It
should
have
a
very
good
open
source
support
and
it
should
be
able
to
ignore
browser
platform
and
india
leasing,
corporates
which
we'll
discuss
in
detail
in
the
next
slides.
It
should
also
support
responsive
testing,
because
we
do
use
some
kind
of
responsive
testing
like
we.
We
do
have
some
responsive
features
and
functions.
I
It
should
also
be
able
to
very
well
handle
dynamic
data,
because
dashboard
has
a
lot
of
moving
parts
and
capture
screenshots
moving
screenshots
is
a
big
challenge.
The
tools
must
have
a
really
smart
way
to
do
that,
you
could
also
introduce
reports
with
comparisons
like
this
and
a
really
good.
I
I
I
We
don't
have
a
lot
of.
We
don't
have
a
lot
of
tools
that
passed
all
these
criteria,
but
so
we'll
just
discuss
some
of
the
most
popular
tools
and
then
we'll
discuss
the
tools
that
work
with
the
best
and
text
all
the
boxes.
For
us,
the
first
in
our
list
was
phantom
css,
which
is
also
the
first
visual
test
testing
tool
based
on
javascript,
and
this
is
where
all
the
visualization
testing
tools
started
to
come
up
with.
I
So
what
phantom
css
is
does
is
it
takes
screenshot
capture
it
captured
by
caspases
and
compares
them
with
baseline
images
using
resemblances,
and
it
generates
those
diffs
with
the
phantom
css,
but
it's
really
outdated.
It
was
unmaintained
since
it
has
been
unmaintained
since
2017.
I
It
only
works
with
it
doesn't
have
a
browser
support
like
you,
can't
see
it
actually
in
the
browser
you
can
just
see
if
the
divs
failed
or
not
in
the
headless
mode.
It
doesn't
have
good
test
management
tools
and
no
reporting
tools.
I
Next,
on
our
list
is
faith
which
is
developed
by
british
forecasting
council
pvc
built
for
performing
visual
dips
and
responsive
websites.
There
was
a
successor
to
the
phantom
css.
I
It
also
is
really
good
on
blogs
and
stuff,
and
it
also
allows
authors
to
test
various
viewport
bits
like
very
good,
with
responsive
and
also
has
this
really
cool
feature
that
it
will
ignore
all
these
platforms
platform,
specific
nkl,
using
differences.
It
is
the
most
part
of
the
false
positives,
and
ever
since
it
was
written
by
the
bbc
it
it
received
quite
a
bit
of
publicity
and
yeah.
I
So
these
are
the
pros
and
cons
here
it
doesn't.
It
has
a
really
good
nti
leasing.
Support
like
it
won't
have
a
lot
of
false
positives,
but
even
this
was
not
really
good
for
us,
because
it
wasn't
able
to
handle
the
dynamic
content
well
and
no
reporting
tools
and
was
only
able
to
test
full
page
screenshots
where
we
needed
to
test
small
components
as
well
individually.
I
The
next
on
our
list
was
type
resume
snapshot,
which
is
the
first
well
the
first
intuitive
approach
that
intuitive
tool
that
we
use
since
we
already
use
the
endpoint
for
our
entwin
test,
we're
always
using
cyprus
and
it
plugs
in
really
well
with
our
infrastructure.
I
It
is
really
a
fully
open
source
and
it
isn't,
and
all
of
the
preferred
ones
were
open
source
as
well,
but
the
biggest
problem
was
it
was
generating
a
lot
of
false
positives.
It
wasn't
able
to
ignore
browser,
specific
anti-aliasing
differences.
I
wasn't
able
to
handle
dynamic
data.
I
I
Also,
the
biggest
reason
was:
I
talked
about
india
losing
offsets
and
all
that,
so,
let's
talk
this
is
one
of
the
most
east
will
have
like
the
same
problem
with
them.
The
problem
is
that
it
all
uses
pixel,
matching
and-
and
one
does
not
simply
do
with
map
comparison.
It
uses
pixel
by
pixel
matching
with
not
comparison,
we'll
understand
why.
I
Let's
see
how
bitmap
comparison
actually
works,
pixel
by
pixels
with
map
comparison
work
in
bitmap
comparison,
a
bitmap
of
screen
is
captured
at
various
points
of
a
testing
and
its
pixels
are
compared
to
a
baseline,
bitmap
and
comparison
stays
and
they
hydrate
through
each
pixel
pair
and
then
check
of
the
color
hexors
color.
Hex
codes
are
same
if
the
color
codes
are
different.
It
raises
the
visual
work
and
if
they
are
same
it
passes
them.
I
I
I
wasn't
able
to
handle
a
lot
of
dynamic
data
when
you
have
dynamic
content
that
changes
like
our
step,
dashboard
where
you
want
to
check
to,
and
you
want
to
check
in
a
in
a
dynamic
environment,
you
want
to
check
the
layout
is
laid
properly
and
the
alignments
and
everything
does
not
overlap
and
everything.
I
The
elements
don't
overlap.
The
pixel
comparison
tools
can't
test
for
these
cases
and
dynamic
content
is
probably
not
the
biggest
downside
of
this
pixel
by
pixel.
Matching
the
biggest
choice
was
this:
this
happens,
as
you
can
see
in
this
picture
like
you
can
see,
they
look
almost
identical
to
human
eye,
but
two
pixel
by
pixel
matching
algorithms
cannot
generates
a
lot
of
tips,
so
this
happens
because
of
a
lot
of
reasons,
and
these
are
not
even
dynamic.
I
Images
like
it's
not
even
moving
is
static
content,
and
this
happens
because
of
a
lot
of
reasons
like
fun,
smoothing,
algorithms,
image,
resizing
graphic
cards,
different
graphic
cards
and
even
rendering
algorithms
generate
a
lot
of
pixel
differences.
I
As
a
result,
a
tool
that
expects
exact,
expect,
exact
pixel
matches
between
two
images
can
always
be
filled
with
pixel
differences
so
to
our
rescue.
We
have
ai
for
virtual
regression,
testing
and,
unlike
pixel
by
pixel
comparison,
ai
powered,
automated
visual
networking
tested
tools
do
not
need
special
environment
that
remains
static
and
that
remains
starting
to
ensure
accuracy
and
hence
have
a
high
degree
of
high
degree
of
accuracy
and
even
with
dynamic
content,
because
the
comparisons
are
based
on
relationship
and
not
simply
on
pixels.
I
So,
let's
look
at
some
of
the
ai
powered
visualization
testing.
First,
one
is
percy
and
percy
is
one
of
the
most
popular
tools
that
is
used
a
lot
in
these
days
in
the
industry
it
has.
It
is
also
known
as
visual,
resisting
these
tools
are
also
known
as
visual
regression
testing
as
a
service.
I
What
they
have.
They
use
automated
artificial
intelligence
to
compare
their
and
learn
over
time
like
if
the
tips
are
failing,
or
should
the
dips
fail
or
not,
it
has
so.
Percy
has
an
sdk
for
cyprus
and
others.
I
I
Some
of
the
constraint
was
since
it
wasn't
open
source.
Some
of
the
constraint
was,
it
has
5000
screenshots
per
month
and
screenshot
from
a
screenshot
is
rendering
of
a
page
or
component
in
an
individual
browser
over
different,
responsive
widths,
combinations
and
everything.
And
if
you
want
different
browsers,
it
counts
as
one
screenshot
too,
and
it
has
30
bit.
It
only
has
30
day
build
history,
which
is
probably
fine,
but
no
I'm
not
really
so
in
our.
I
In
our
experience
it
was
able
to
very
well
handle
the
dynamic
data
and
the
moving
parts
of
our
dashboard.
I
It
has
really
intuitive
dashboard,
intuitive
ui
and
very
easy
to
understand,
but
I
was
still
logging
in
by
lagging
behind
in
a
lot
of
things
that
apple
tools
was
able
to
fill
those
gaps
so
yeah
it
is
a
bit
more
powerful
than
percy.
It
has
exhaustive
documentation
and
easy.
I
see
the
integration,
but
some
of
it.
Even
it
has
some
of
the
constraints
it
happened.
It
only
supports
like
100
100
checkpoint
screenshots
per
month.
I
I
It
was
really
good
with
the
dynamic
content
it
was
able
to
generate
ignore
regions
using
code
and
even
with
the
qe,
we
were
able
to
add
the
ignore
regions.
It
is
very
accurate.
I
Had
the
minimum
number
of
false
positives
and
it
has
really
good
thinking
some
integration
that
we're
using,
so
this
is
one
of
the
sample
tests
that
it
is
merged,
actually,
not
always
so
it
is
really
simple.
You
only
have
three
methods
in
amplitude,
you
have
cy
dot,
eyes,
open
and
see
why
dot
check
window
and
then
eyes
close.
So
if
you're
for
starting
the
app
tools
you
use
eyes
open
and
to
check
window.
This
is
how
I
check
the
content.
I
You
have
is
a
check
window
and
it
should
be
placed
like
where
you
want
to
capture
the
screenshot
look
at
which
point
of
the
test
you
want
to
capture
screenshots,
and
you
just
close
this
and
you
you
see
why
that
is
when
you're
ending
the
test-
and
this
is
another
test
this
I
put
this
test,
because
this
is
the
test
for
dashboard
component.
I
I
It's
really
simple
to
just
add
ignore
regions,
and
this
is
the
articles
config
like
you,
can
see,
you
can
give
test
concurrency,
so
it
and
in
free
plan
they
support
like
10
test
concurrency,
and
you
can
just
provide
like
an
array
of
different
browser,
widths
and
just
different
browsers
and
different
responses
with
different
viewport
width
and
orientation.
You
can
even
test
it
on
mobile
devices
and
everything.
I
So
we
have
a
lot
of
dynamic
content.
I
already
talked
about
it,
but
in
our
safe
dashboard,
things
are
supposed
to
keep
moving,
and
this
is
one
of
the,
and
this
is
one
of
the
dynamic
element
we
have
in
our
dashboard
canvas
element,
a
chart
element
so
to
stabilize
these
screenshot
baseline
screenshots
and
mitigate
false
positives.
There
are
two
methods
that
we
can
handle.
This
one
is
that
we
create
an
ignore
regions,
ignore
region
that
I
already
use
in
that
we
are
already
using
in
the
dashboard
component
and.
I
And
you
can
create
these
ignore
regions
by
either
coding
them,
like.
You
can
just
add
a
css
selector
or
you
can
just
give
the
position
where
the
ignore
region
should
be,
or
you
can
go
in
the
testing
and
using
qe.
You
can
just
marquee
mark
the
ignore
region
and
the
next.
The
other
method
is
by
changing
the
match
level.
I
Now,
by
changing
the
match
layer
to
layout,
we
can
switch
to
different
match
levels
within
components
and
tests.
Instead,
it
can
check
you
can
check
content,
font,
layout,
color
and
position
of
elements
and
content.
It
can
check
the
and
it
is
very
similar
to
restrict,
but
can
check,
also
check
for
colors
it
can.
It
will
ignore
color
changes.
I
The
last
option
is
layout
match
level.
With
this
match
level.
The
eyes
matching
engine
ignores
differences
in
the
actual
content
text
and
graphics,
color
and
other
style
changes.
I
This
much
level
is
most
effective
and
used
to
validate
pages
with
dynamic
content
and
right
now,
in
our
record,
which
we're
using
tech
matching,
but
even
exact
matching
has
worked
really
well
for
us
and
I
recommend,
like
trying
out
different
match
levels,
to
see
what
you
really
need
in
my
experience,
like
layout
option
is
just
used
very
good
for
like
when
you
have
a
blog
for
blog
page
or
a
new
site,
or
something
where
you
have
different
blogs
coming
on
coming
in
every
day
and
something
you
can
only
just
see,
you
can
only
check
the
layouts
and
stuff
so
as
we
are
reaching
the
end.
I
Let's
discuss
what
visual
testing
is
not
it.
What
visual
testing
is
not
is,
it
does
not
verify
the
logic
functionality
and
you
can't
replace
it
with
functional
tests.
Functional
tests
are
needed
and
which
should
then
can't
be
used
to
stick
them
and
they're.
Also
not
typical
fully
automated
test
suite.
You
don't
always
want
the
passing
of
failing
value.
I
Sometimes
when
you,
when
you
make
some
changes
to
your
mate,
make
some
changes
you
will
have
to
go
to
the
apple
tool.
You'll
have
to
go
to
the
session
and
manually
check
the
tips.
I
Let
me
show
you
in
the
input
version
5.
Our
login
page
will
look
something
like
this,
but
all
our
tests
are
passing
here.
You
can
see
so
this
is
really
hard
to
catch
using
already
existing
solutions.
So
we
have
to
use
visual
testing
and
you
can
see.
Visual
testing
was
able
to
actually
check
the
devs
easily.
I
I
You
can
click
on
the
mask
and
see
what
all
things
are
not
there
in
the
screenshots.
So
this
works
really.
This
works
really
well
with
our
testing
infrastructure
and
is
able
to
catch
the
visual
test
really
well.
I
So
next
I'm
gonna
write
more
tests
for
the
different
dashboard
components
and
I'm
gonna
and
I'm
gonna
be
writing
contribution.
You
can
help
in
that
as
well
and
I'll
be
writing
documentation
for
that.
So
you
can
documentation
to
write
how
to
write
more
tests
and
you
might
have
seen
and
next,
as
we
also
I'll,
also
be
working
on
the
ci
cd
pipeline,
integrate
that
in
integrated
well
with
the
jenkins
pipeline.
C
I
guess
I'm
kind
of
curious,
not
I'm
not
being
aware
of
that
word
development,
so
much
how
much,
how
how
often
or
what
proportion
of
the
bugs
do
you
find
tend
to
be
these
kinds
of
visual
bugs
versus
more
functional,
bugs.
I
There
are
a
lot
of
bugs
like
one
of
the
biggest
thing
that
it
can
help
in
is
detecting
new.
When
you're
upgrading
new
frameworks
like
you
have
in
since
it's
a
javascript
project,
you
have
to
keep
moving
and
you
have
to
upgrade
it
really
fast,
like
you're,
using
cyprus
version,
4
and
cypress
version
5,
and
now,
with
subscribers
version
7,
and
also
we're
using
bootstrap
version
4
and
since
we'll
have
to
constantly
upgrade
our
framework
in
libraries.
I
We
can
see
what
changes
are
gonna
come
up
in
ahead
of
time
and
before
merging
it
and
see
if
something's
gonna
break
or
not
it
does.
It
really
helps
in
a
lot
of.
B
C
B
C
See
how
it
would
help
done
with
remembering
new
versions
all
the
time
and
nothing
is
bugs
from
even
being
merged
in
the
first
place.
B
Yeah,
the
dissolved
ones
are
really
hard
to
catch.
So
that's,
I
think
this
addition
is
going
to
help
us
a
lot,
especially
currently
we
have
tried
not
to
migrate
to
the
latest
stuff,
like
the
latest
angular,
the
latest
bootstrap,
ui,
etc.
Just
to
avoid
this
kind
of
regressions,
but
with
having
this
kind
of
safeguards,
I
think
we
can
more
safely.
B
I
mean
keeping
in
updated
with
these
libraries
because
every
time
that
there's
a
new
twitter
and
senior
bootstrap
ui,
I
think
we
have
to
perform
a
massive
refactoring
and
check
everything
that
everything's
okay,
so
yeah,
that's
that's,
really
tricky
and
also
it
sometimes
works
well
with
some
devices.
But
then
you
get
a
report
from
someone
running
some
strange
browser,
that's
very
broken,
so
yeah,
that's.
Hopefully
at
least
we
will
cover
firefox
and
chrome
with
this,
and
that
will
be
a
starting
point,
but
I
mean.
I
C
I
No,
it
is,
it
won't
be
able
to
replace
the
functional
tests
at
all.
It
is
more.
Visual
tests
are
more
compliment
to
that
complement
to
functional
tests,
because
visual
test
visual
education
tests
only
as
for
the
visual
aspects
of
it
and
not
the
elements
and
everything,
and
if
even
if
they
are
clickable
or
not,
and
the
different
states
of
the
elements
and
stuff,
it's
not
gonna
more
of
complement
to
the
function,
type.
G
I
had
to
step
out
for
a
bit,
so
I
may
have
missed
this,
but
are
aren't
we
going
to
run
into
the
limits
imposed
by
the
you
know
by
the
by
the
cloud
offering
there
if
we
incorporate
this
into
our
regular
jenkins
tests,
which
are
you
know,
quite
quite
heavy
and
run
quite
often.
I
Yeah,
so
we
did
calculate
on
the
number
of
screens,
screenshots
we'll
be
catching
like,
based
on
the
number
of
pull
requests
we
already
receive
on
the
dashboard
and
after
tools.
Open
source
plans
gives
us
10
000
screenshots
per
month,
which
is
pretty
liberal
and
like
previously,
we
thought
there
was
5000
scene
shots
for
one,
but
even
then
it
was
really
good.
I
So
yeah,
I
don't
think
we'll
be
hitting
that
very
often
still
seeing
like
we'll
check
this
month
as
well
like,
if
I
don't
think
so,
will
be,
and
even
if
you
want
to
migrate
to
different,
let's
say
you
want
to
migrate
to
percy
from
aptitudes.
It's
just
changing
two
lines
of
code
in
every
test.
So
it's
really
easy
to
migrate
to
other
tools.
I
B
Yeah,
let's
see
we
did
a,
I
mean
a
prior
calculation,
more
or
less
the
amount
of
screenshots
that
we
would
take
and
it
might
work.
We
will
probably
need
to
tune
that
a
bit,
but
let's
see
in
any
case
well,
I
had
some
conversation
with
the
appleton's
team
and
they
I
mean
initially
granted
the
open
source
plan,
let's
check
if
they
might
be
flexible
in
the
future.
I
know
that
at
least
the
ansible
shower
team.
B
They
are
using
apple
tools
as
well
for
testing
the
the
ui
and
they
are
using
the
open
source
plan
so
and
I'm
sure
they
are
having
quite
a
I
mean
high
throughput
and
of
gears
and
so
on
so
yeah.
Let's
see
this
is
just
a
poc
for
the
diamond
so
but
yeah,
let's
explore
this
and.
B
And
we
have
now
the
last
demo
from
the
dashboard
interns,
so
in
this
very
case,
whatever
are
going
to
talk
about
the
chef
manager
and
their
experience
trying
to
or
catching
that.
So
what
berry
are
you
ready
for
the
demo
or
this
presentation.
F
All
right,
hello,
everyone-
this
is
wadalkari
and
presenting
with
me
here.
F
So
we're
going
to
present
what
we
have
been
exploring,
analyzing
and
developing
developing
in
the
last
four
months.
We
started
early
april,
I
believe
so
with
caching
and
yeah,
we
going
through
you
what
we
came
up
with
the
ways
we
have
done
it
and
how
how
we
did
it
so
why
we
have
started
this
issue.
First,
we
have
been
receiving
feedbacks
of
some
users.
F
The
module
commands
were
taking
too
much
time
up
to
seconds.
The
cpu
were
reaching
the
peak,
and
sometimes
the
model
commands
were
unresponsive
and
also
we
could
help
the
support
team
to
debug
the
underperforming.
Self-Manager
api
calls
that
behaves
like
a
black
box
without
any
further
information.
F
F
What
we
did
was
manager
well
pressing,
the
manager
model,
testing,
injecting
fake
data,
osd
map
or
pg
maps
and
so
on,
and
we
have
work
on
shared
dtf
cache
from
the
c
plus
side,
because
we
have
thought
it
would
be
better
to
have
a
shared
caching
than
caching
each
module
and,
for
instance,
and
civilizing
data.
We
have
been
using
file
format
and
just
information.
We
have
tested
both
and
came
up
with
different
results.
F
So
how
we
expose
the
api
method
through
the
cli
with
well
with
this
command
we
can
expose.
Well,
we
can
see
all
the
commands
the
mine
is
with
dash.
H
is
the
help
command,
so
we
can
see
all
the
api
methods,
as
you
can
see
the
method
and
description
about
how
to
use
it.
F
So
if
we
expose
the,
if,
if
we
expose
the
osd
the
or
the
get
method
osd
map,
we
can
receive
this
in
a
json
format,
as
you
can
see,
with
manager,
api
git
osd
map,
and
now
I'm
going
to
talk
about
different
types
of
benchmarks
based
on
and
performance,
diversified
performance
component
level
and
system
level.
Benchmark
component
level
is
distinguished,
specific
component,
which
we
have
used
and
system
level
benchmark,
evaluate
the
overall
performance
of
running
application.
F
So,
with
this
command
we
can
expose
the
benchmark.
F
The
api
call
will
benchmark
an
api
method,
safe
manager,
api
benchmark,
get
osd
map
number
of
calls,
is
the
1000,
for
example,
and
number
of
trades
is
the
last
parameter
we
passed.
The
osd
map
is
the
data
we
are
passing.
The
the
get
is
that
I
model
on.
F
Regarding
this
we
have
we
have.
We
have
seen
some
design
flows
well,
as
I
said
before,
how
to
debug
the
manager
modules
for
the
developers.
Safe
managers
take
quite
long
time
that
you
take
quite
long
time.
The
cpu
reached
the
peak
and
we
have
realized.
There
is
a
missing
of
pagination
to
filter,
unnecessary
data
from
the
maps.
F
So
for
for
further
analysis
and
data,
I
will
leave
you
with
very
so
to
explain
more
what
we
have
found.
J
Hey
so
for
now,
where
we
will
talking
about
the
results
that
we
got
from
caching,
the
monitor
module
and
if
you
don't
mind
having
a
headache
or
you're
immune
to
it,
you
can
look
at
the
pr
that
you
can
see
on
top,
and
so
basically,
this
is
the
structure
that
we
currently
have
for
the
manager
demon.
And
basically,
you
can
see
that
we
have
some
maps
on
the
left
side
in
the
manager.
J
J
So
that's
that's
going
to
cause
some
problems
to
solve
this.
We
decided
to
go
with
a
cache
in
the
ziplockplus
site,
so
we
can
share
the
cache
between
every
module,
so
we
don't
have
to
store
every
call
in
every
module
and
basically
we
put
the
title
guys
there
and
to
do
this
we
had
to
solve
some
problems.
The
first
one
was
that
the
some
monitor
modules
were
modifying
the
pi
objects
and
as
an
example,
there
were
some
modules
that
deleted
a
value
and
then
another
module
tried
to
get
that
module.
J
J
Then
we
cast
it
and
it
was
31
faster
than
the
current
implementation,
which
is
a
bit
better,
but
not
good
enough.
So
what
what
we
thought
about
was
changing
the
formatter
to
adjacent
formatter.
We
we
went
with
the
json
formatter,
basically
because
we
already
have
the
implementation
and
it
was
faster
to
implement
this
case.
J
J
Also,
we
try
to
implement
a
pineal
serialization
into
what
I
like
another
formatter,
that
used
binary
civilization,
and
here
you
can
see
there
are
tons
of
them
and
we
went
for
message
pack
since
it's
it
has
a
support
for
a
centos
and
m
federer
and
piccolo
didn't
have
4th
century's.
So
we
didn't
go
with
that
at
the
end,
we
made
it
work
with
death,
but
it
didn't
go
fast
enough.
J
J
Inject
some
load
to
the
monitor
module
and
without
cache,
and
also
with
the
json
formatter,
and
so
basically
we're
going
to
run
this.
It
will
generate
some
load
on
the
monitor
module
and,
as
you
can
see,
this
takes
a
while
to
load
and
yeah.
They
will
finish
now
and
now
we
are
going
to
try
the
same
with
the
same
load
but
with
the
gaussian.
J
About
future
improvements,
we
think
that
we
need
some
fascination,
because
we
are
retrieving
the
whole.
The
map,
for
example,
instead
of
if
we
wanted
to
get,
for
example,
10
noise.
This
only
we
have
to
get
the
1000
towers
this
to
bearing
some
problems.
J
As
a
conclusion,
at
first,
we
saw
that
json
formatter
with
occasion
is
71
percent
slower,
but
if
we
cash
it
with
3
000
like
this,
we
get
a
boost
in
with
56
percent
faster
than
the
pi
formatter
and,
moreover,
we
we
can
decouple
the
modules
if
we
use
json
formatter,
for
example,
as
we
we've
seen
some
problems
with
interpreters
and
to
finish
the
I.
We
think
that
the
question
elevates
the
heavy
load
problems,
but
it
doesn't
solve
the
entire
problem.
K
I
had
a
good
question,
so
the
automated
performance
testing
bit
that
you
talked
about,
do
you
have
any
ideas
or
thoughts
about
you
know
how
you
want
to
implement
that
or
where
you
want
to
implement
that.
J
K
Yeah
we've
talked
about
this-
I
think
in
the
past,
like
you
know,
have
something
run
in
the
background,
which
would
you
know
which
tells
us
how
how
the
performance
is
over
a
period
of
time
and
that's
something
we
could
also
integrate
with
the
telemetry
performance
channel
in
future.
K
That's
so
the
telemetry
performance
challenge
is
essentially
like
a
telemetry
module.
It
has
a
performance
channel
that
we
are
working
on
so
currently
we
are
trying
to
capture
more
like
osd,
specific
and
pg,
specific
stats,
etc.
K
So
if
we
have
something,
that's
running
performance,
benchmark
benchmarking,
the
manager
in
the
background-
maybe
that's
something
we
can
incorporate.
K
C
If
you're
late,
I
was
wondering
if,
if
you'd
look
as
well
at
instead
of
catching
trying
to
reduce
the
that
the
fields
you
needed
to
be
cached
for
these
structures,
like
the
pgmf,
for
example,
has
tons
and
tons
of
information
that
I'm
not
sure
the
dashboard
needs.
All
of
that
all
the
time.
J
C
I
guess
the
question
is:
have
you
thought
about
trying
to
reduce
the
amount
of
data
in
some
of
these
structures
like
the
like?
The
pg
map
or
ost
map
have
many
different
fields
that
we
may
not
need
to
use.
All
of
them.
L
Josh
we've
seen
a
similar
thing
in
the
rgw
cls
classes
in
the
osd,
where
we
need
to
filter
based
on
a
very
small
set
of
fields,
and
we
end
up
decoding
a
much
larger
data
structure
and
then
re-encoding
after
we
filter
on
those
different
fields.
It
might
be
a
good,
it
might
be
beneficial
for
us
if
we
can
re-structure
the
way
we
think
about
these,
so
that
we
really
focus
on
specific
fields
that
we
need
and
figure
out
how
to
kind
of
avoid
dealing
with
lots
of
extra
data.
C
D
On
one
of
your
earlier
slides
and
when
you're
talking
about
pi
objects,
one
of
the
problems
was
that
they
were
modified.
I'm
wondering
what
instances
did
you
identify
where
they're
actually
being
modified
they're
being
fetched?
J
Right
yeah,
I
don't
remember
exactly
where
you
were,
but
I
think
it
was
in
two
modules,
but
I
cannot
give
you
the
specific
answers
right
now.
B
Yeah
yeah,
the
thing
here
is
that
you
cannot
prevent
in
the
future
this
from
happening.
So
that's
the
issue
with
with
python
that
you
cannot
really
create
immutable
objects
and
it
has
to
be
a
best
effort
from
the
developers
to
you
know,
modify
these
structures.
Otherwise
the
consequences
will
be
catastrophic
here.
D
C
They're,
like
overwriting
stuff,
like
the
methods
that
accessories
and
and
and
methods
to
detect
when
enabling
just
modified.
B
Yeah,
the
thing
is
that,
as
you
are,
are
returning
a
nested
structure,
anything
within
that
structure
would
be
modified.
So
if
you
want
to
do
some
that
kind
of
thing,
you
need
to
traverse
the
whole
structure,
which
is
smaller,
the
same
penalty
as
you're
paying
when
you
are
doing
a
copy
that
you
need
to
traverse
the
whole
structure.
It's
deeply
nested,
so
perry
was
trying
that
using
immutables
and
also
copying
right
approach.
But
in
the
end
I
mean,
if
someone
is
accessing
a
a
list.
D
B
Yeah,
they
could
think
of
the
json
approach
and
it
can
be
replaced
with
a
b
zone
or
binaries
on
or
whatever
some
other
more
compact
interfaces
that
we
can
decouple
the
I
mean
at
last.
We
can
decouple
the
manager
and
the
sub
interpreters
thing,
so
we
can
have
modules
running
outside
the
manager
maybe
remotely,
so
that
might
be
a
first
step
towards
that
yeah.
Okay,
coming
back
to
the
previous
question
from
mark
and
just
one
possibility,
the
api
is
not
very
fine-grained,
so
we
are
just
returning
these
big
chunks
of
data.
B
One
possibility
would
be
maybe
to
allow
passing
some
x
paths
like
you
know
expressions,
so
you
can
filter
things
like
the
same
as
the
jq
tool
or
the
xpath
expressions,
for
example,
where
you
can
define
filter
out
fields
like
only
return
these
fields
or
that's
not
a
simple
thing,
but
it
allows
us
to
you
know
just
return
the
data
that
the
consumer-
and
this
is
actually
instead
of
returning
everything.
C
Yeah
yeah,
I
guess
it
might
be
a
little
tricky
if
you,
if
you
wanted
to
avoid
the
like
jason
encoding
overhead
in
the
first
place.
It
applies
that
kind
of
filter,
yeah.
B
Let's
see
that
you
just
want
the
first
level
in
next
dictionary,
so
you
just
return
the
first
level
of
data,
so
maybe
we
can
use
some
syntax
just
to
say
that
or
maybe
you
just
want
to
access
some
specific
property
in
a
dictionary
and
if
we
can
agree-
and
we
can
use
some
existing
language
for
that-
and
there
are
a
couple
of
them,
but
we
can
use
our
custom.
We
just
want
to
extend
this
behavior.
G
I
think
you
mentioned
that
this
is
a
ttl
cache
which
I
assume
stands
for
time
to
live,
and
I
think
you
mentioned
10
seconds.
That's
what
I've
heard,
but
you
know
structures
like
hd
maps,
don't
usually
change
that
often
does
it
mean
that
we,
you
know,
do
the
work
of
recaching
every
10
seconds,
or
am
I
missing.
D
Would
it
be
easy
to
change
the
the
cache
validation
or
whatever
to
instead
just
see
if
the
epic
matches?
If
so
we
use
it
and
if
it
doesn't
then
generate,
I'm
not
sure
how
the
code
is
structured,
but.
G
That
might
be
yeah.
These
are
versioned
data
structures.
Each
of
them
has
a
unique
version,
and
sometimes
they
like
there
is
a
burst.
So
you
could
see
you
know
in
five
seconds.
You
could
see
like
five
new
versions,
but
under
you
know
normal
cluster
operation.
The
same
map
would
persist,
for
you
know.
M
G
Persist
for
hours,
if
not
days,
so
this
is
you
know,
throwing
out
the
the
the
cached
object
and
every
10
seconds
is
definitely
not
ideal.
B
Well,
yeah,
actually,
the
object
won't
be.
Map
won't
be
recalculated
after
10
seconds
only
if
someone
actually
request
that,
so
the
cache
entry
will
become
still
and
only
some
some
module
is
requesting
that
data
will
be
recalculated
or
reconstructed
but
yeah.
I
agree
that
we
might
improve
this
further.
C
C
So
the
next
topic
is
jager
tracing.
I
think
this
was
brought
up
on
the
mailing
list
by
ubal.
I'm
not
sure
if
you
all
is
here.
M
Sure
I
can
introduce
that,
but
this
is
really
in
the
scope
of
the
rgw.
This
is
what
we've
done
so
far.
There's
also
egg
tracing
in
the
scope
of
the
osd,
and
I
guess
deepika
can
talk
about
that
and
we
need
to
sometime
merge
those
two
efforts.
Of
course.
M
So
I
mean
in
both
cases
we
use
jaeger
tracing,
there's
a
little
bit
of
wrapping
that
we
need
to
do
around
the
tracing.
It's
not
too
much
the
at
least
in
the
rgw.
We
have
two
levels
of
disablement.
M
One
is
at
compile
time,
and
this
is
for
people
that
would
build
without
jaeger
and
or
for
systems.
That
cannot
support
that.
For
some
reason
and
the
more
interesting
level
is
to
disable
at
runtime,
so
the
runtime
disabling
inside
jaeger.
They
have
something
like
a
no-op
tracer,
so
it
does.
It
has
all
the
apis
that
regular
tracer
has,
but
it
does
nothing.
M
M
M
Then,
currently
in
in
the
rgwd,
we
started
from
tracing
on
the
operations.
So
all
the
operation
puts
object,
the
departure
that
object.
All
these
operations
are
going
to
create
a
trace,
and
then
they
can
have
one
or
more
spans
in
them
for
some,
which
means,
if
they're
branching,
then
then
this
could
be
supported
inside
and
that's
going
to
be
the
basic
implementation.
M
We
the
we're
going
to
add
some
tags,
which
is
something
that
is
supported
in
the
jager
those
tags
later
on
they're
stored
in
elasticsearch,
so
they
could
be
used
for
searches
like
if
you
want
to
get
all
the
traces
for
a
certain
bucket
or
a
central
user
or
object.
Let's
start
with
something
or
whatever
condition
you
can
get,
you
can
get
that
a
more
interesting
use
case
that
we're
going
to
have.
M
Is
you
the
inaugural,
there's,
an
ability
to
serialize
and
visualize
the
the
trace
itself,
so
it
could
be
picked
up
by
another
process
or
by
the
same
process
in
a
different
thread
or
different
place.
M
The
first
use
case
we're
going
to
have
for
this
is,
is
in
the
case
of
multi-part
upload,
so
in
case
of
multiple
upload
you
have
like
the
in
it
and
then
you
have
each
chunk.
You
have
an
object
put,
and
then
you
have
the
complete
so
we're
going
to
use
those
serialization
dc
relations
so
that
in
the
ui
it
would
look
like
just
one
big
trace
all
the
different
operations,
although
they
can
happen
on
different
latest
gateways
at
different
times,
and
so
on.
M
Another
step
that
we're
probably
going
to
use
the
serialized
industrialized
function
is
passing
the
trace
to
liberators
and
then
sending
that
over
to
the
osd,
and
then
you
can
have
a
trace.
That
starts
from
the
front
end
operation
in
the
redis
gateway
and
trickles
all
the
way
down
through
the
three
liberators
to
the
osd.
M
For
for
all
the
operations,
and
even
more
interestingly,
at
least
in
devastation.
We
use
lots
of
cls.
M
The
last
piece
that
we're
gonna,
hopefully
use
tracing
for
and
and
get
better
better
understanding
and
and
debuggability
of
the
system
is
with
the
multi-site
thinking,
which
is
something
which
is
extremely
difficult
to
debug.
M
Today,
again,
it
would
require
serializing
and
visualizing
the
traces
into
into
the
object
only
into
the
the
bucket
index
log,
and
then
you
would
be
able
to
to
figure
out
which
object
that
was
first
handled
by
one
rgw
when
it
was
fetched
by
knowledge
w
in
a
different
site
with
different
zone
and-
and
this
would
give
us
better
debuggability
of
this
complex
system.
M
So
that's
like
the
the
main
thing
there.
There
is
a
different
trajectory
of
development
that
is
dealing
with
deployments
so
the
first
step
it's
going
to
be
just
the
communication
for
a
manual
deployment.
M
This
is,
for
you
know
just
explaining
how
we
expect
the
agents
and
the
collectors
and
so
on,
to
be
deployed
mainly
pointing
to
the
existing
documentation.
So
there's
not
another
title
deployment
would
be
cfdm
based
one,
and
this
is
something
that
I
think
deepika
started,
but
it's
still
working
progress.
M
As
far
as
I
know,
and
the
the
last
option
of
deployment
would
be
openshift
based
or
rook,
based
where
that
would
be
actually
from
jaeger
perspective,
that
would
be
the
easiest,
because
jaeger
is
actually
geared
toward
kubernetes
or
openshift
deployments,
so
they
already
have
an
operator
and
everything.
So
that
would
be
actually
the
easier
part
to
do.
That's
that's
another
direction
that
we
would
need
to
progress
in,
and
there
were
also
thoughts.
M
This
is
like
more
advanced
about
conditional
tracing
tracing
would
be
heavy
on
the
system,
so
it
probably
won't
be
turned
on
always
by
default,
and
we
want
to
be
able
to
add
a
mechanism
that
would
allow
users
in
the
field
not
only
to
disable
and
enable
tracing
as
a
whole,
but
also
enabling
disabled
tracing
for
specific
operations,
or
you
know
only
for
multi-site
syncing
and
not
for
the
operations
or
only
for
cls
only
on
the
osd
only
on
the
rgw,
so
it's
kind
of
all
kind
of
combinations
of
of
conditional
operation.
C
The
overall
plan,
in
addition
to
the
conditional
aspects,
thank
you
document,
there's
like
some
workplace,
that's
a
little
sampling
already
in
jager.
Is
that
sufficient
for
our
purposes
or
we
need
to
add
some
extra
little
samples
against
itself.
M
I
don't
think
so,
because
sampling
is
really
saying:
okay
from
from
the
entire
tracing,
we
don't
need
all
the
traces
we're
going
to
just
sample
10
and
that's
gonna
reduce
the
load,
but
I
think
that,
usually,
when
you
come
to
debug
a
system,
then
then
I
mean,
for
example,
if
you,
if
you
want
to
use
tracing
in
order
to
get
some
kind
of
estimates
on
your
on
the
different
latencies
of
the
different
steps
in
your
process.
So
samsung
would
be
sufficient
and
great
solution
in
this
case.
M
But
if
you
want
to
debug
multi-site,
because
you
have
problems,
let's
say
one
of
the
buckets
is
not
syncing
and
you
want
to
debug
multi-site.
Then
sampling
won't
help.
You
you'll
have
to
actually
disable
tracing
for
everything,
so
it
won't
stand
in
your
way
and
just
enable
tracing
for
for
bucket
syncing,
ideally
for
a
specific
bucket
and
then
there'll
be
low
impact
on
the
system.
But
you
would
get
all
the
information
that
you
need
for
debugging,
so
yeah.
C
A
The
reason
I
added
it
in
cdm
was
just
to
bring
the
consensus
between
the
development
of
rgw
and
osd
and
how
we
can
proceed
forward
and
like
what
is
needed
from
ost
front
and
rgw,
so
that
we
have
a
complete
development
of
tracing
functionality
in
general
and
what
all
features
do
we
want
to
target
as
priority
for
quincy?
A
Maybe
now
in
general,
as
josh,
suggested
that
there
are
sampling
strategies,
we
can
also
have
sampling
strategies
from
what
I
saw
that
they
would
collect
the
spans
locally,
but
they
won't
transmit
it
and
they
would
only
transmit
the
ones
that
we
choose
to
and
in
case
of
failure.
We
can.
We
also
have
those
spans
collected
in
the
local
demon,
but
not
transmitted,
but
still
available
for
us
to
look
into
if
needed,
while
also
giving
us
the
thorough
picture
of.
A
If
there
is
some
abnormality
in
the
system
but
yeah,
I
that's
again
a
scope
for
later
and
testings
for
from
our
ost
purpose
perspective,
we
have
added
general
traces
for
the
key
input.
Output
output
functions
that
we
have
in
osd
and
we
also
are
targeting
more
of
using
the
existing
methods.
A
Like
mark
point,
marker
points
that
we
have
in
places
where
we
generally
want
to
record
the
matrix
specific
to
that
process,
kind
of
adding
that
rapper
and
also
we
have
contributions
in
booster
for
tracing
as
well.
A
A
Apart
from
it
any
other
developer,
specific
matrix
that
people
would
love
to
see
like
in
a
monitoring
perspective,
I
would
have
be
welcome
to
have
that
feedback,
and
also
one
thing
is
that
these
traces
are
not
just
local.
If
somebody
has
the
traces
suppose,
user
has
the
traces
they
can
also.
A
Convert
those
traces
in
json
format
and
those
json
format
based
traces
could
be
rendered
anywhere,
as
it
is
for
even
a
developer
to
take
a
look
into
what
happened
at
with
the
system.
At
that
particular
point
of
time,
I
added
a
blog
link
that
might
help
somebody
to
get
started
with
using
tracing
and
would
love
the
contributions
there
as
well
feel
free
to
add
any
suggestions.
M
Yeah,
I
think,
from
from
the
thinking
the
two
efforts
there
is
one
small
thing
would
be
to
to
have
like
one
common
wrapper
and
everything
for
the
tracer
instead
of
having
one
in
rjw
and
one
in
under
common,
but
that
should
be
pretty
easy
because
they're
almost
identical
the
two,
the
two
rappers
and
for
the
serialized
disciplines.
I
think
that
one
approach
could
be
that
you
you
try
to
to
deserialize.
M
M
So
if,
if
anyone
is
sending
you
a
parent
span,
then
you
can
digitalize
it
and
use
it
as
your
parents,
pen
and
then
in
the
ui,
then
you
would
see
the
entire
flow
end
to
end,
and
if
you
don't
get
it
then
well,
maybe
nobody
sent
it
to
you.
Maybe
there's
no
need
or
whatever
and
and
then
you
just
start
your
own
parent
span
and
continue
from
there.
And
hopefully
we
will
do
that,
of
course
on
our
side
as
well
in
the
rgw,
but
that
could
be
any
client,
not
necessarily
rgw.
A
C
Imagine
we
could
probably
replace
the
existing
like
zipkin
raiders
api,
with
the
same
form
kind
of
calls
with
the
acre
tracing
instead.
A
Also,
you
will,
if
we
can
do
the
disabling
and
enabling
part
all
from
a
common
perspective,
or
even
like,
based
on
a
component,
that
we
want
to
enable
or
disable
tracing.
For
specifically,
I
would
like
that,
like.
E
A
Have
two
different
places
to
support
enabling
disabling.
M
C
You
can
get
them
from
the
monitor,
like
you,
can
ask
the
monitor
for
the
configuration
from
like
any
attitude's
perspective.
But
I
guess
I
would
push
in
my
mind
would
be.
Is
this
something
that
we
want
to
control
directly
with
like
a
self-configuration
option
or
some
other
kind
of
format
of
configuration.
M
I
think
it
should
be
set
configuration
just
something
that
somebody
goes
in
the
command
line
or
I
don't
need
to
have
that
in
the
dashboard
and
just
set
it
to
true
or
false
in
runtime
I'll.
Try
again,
I
don't
know
a
lot
about
how
this
configuration
mechanism
works,
so
I'll,
try
to
sync
up
with
and
see
if
we
can
have
like
a
convert
solution.
C
In
terms
of,
I
think
that
what
you
described
sounds
like
a
great
plan
and
like
the
deployment
aspect,
is
especially
key
to
making
this
usable
and
for
both
developers
and
for
actual
users.
Of
course,
I
think
those
are
the
other
kind
of
the
first
steps
in
my
mind
as
well.
I
just
getting
that
the
basics
there,
I
think
longer
term
movie
fantastic
to
expand
this,
to
include
like
background
operations
too,
not
just
the
I
o
path,
so
you
can
use
ladybug
and
and
understand.
C
M
Yeah,
once
we
have
a
good
infrastructure
in
place,
then
if
we
like
you
know
anyone
that
writes
a
feature
or
fixes
a
bug
and
want
to
add
tracing
there,
because
it
helps
them
to
do
better
work,
then
they
can
do
that.
So
I'm
going
to
be
kind
of
scale
out
the
work
to
other
people.
That
would
just
follow
the
examples
that
we
said
at
the.
A
A
I
think
even
now
people
can
do
that,
but
yeah
we
would
need
again
the
macros
or
disable
jaeger,
or
at
least
only
in
developer
perspective.
We
can
use
it,
but
yeah
just
working
out
the
foundations
would
help
people
to
use
it
and
scale
ourselves.
C
As
another
aspect,
that's
missing,
I
guess
from
the
osd
side
today-
is
the
integration
with
crimson,
since
that's
going
to
require
a
bit
of
modifications
for
how
we
use
bigger,
to
avoid
locking
and
whatnot
and
blocking
and
I'd.
Imagine
that
we
could
probably
keep
the
same
interface
so
that
wouldn't
affect
this,
like
the
general
common
flow
for
how
you
define
the
traces,
but
the
implementation
might
need
to
be
different
for
like
rooms
internally.
M
So
the
way
that
we
try
to
approach
that
on
the
rgw
because,
like
we
have
like
the
front
hand,
has
multiple
threads
and
they're
using
we're
using
core
routines
there.
The
way
that
we
approach
that
hopefully
that
will
be
useful
is
that
the
so
the
traces
are
just
objects,
so
there's
no
there's
no
blocking
or
anything,
but
the
tracer,
which
is
what
sends
the
tracers
the
to
the
agent
is,
is
something
that
has
a
lock
in
it.
M
It
just
has
a
lock
when,
when
it
does
descending
at
the
at
the
end,
so
when
you
call
finish
on
a
span,
it
goes
to
the
tracer
and
send
the
spin
over
so
to
avoid
contention
on
those
logs.
So
we
cannot
avoid
the
lock,
because
unless
we
want
to
change
the
the
jager
code
but
to
to
avoid
contention
logs,
what
we
do
is
that
we
define
the
tracer
instead
of
just
being
a
global.
M
It's
a
thread:
local
global
variable,
which
means
that
there'll
be
a
log
taken,
but
I
mean
there'd
be
no
contention
because
there's
only
one
thread:
that's
gonna
use
it
at
a
time
and
different
threads.
That's
going
to
use
it!
We're
going
to
use
a
different
client,
so
it'll
be
a
little
a
little
load
on
the
system.
So,
instead
of
one
client
per
daemon
connects
to
the
agent
you
can
have,
I
don't
know
100
clients,
but
that
they
they
shouldn't,
cost
too
much
and
it
would
save
on
the
on
the
locking.
So
maybe.
C
C
G
C
All
right,
so
the
next
topic
is
telemetry
crash
reports.
You
read:
do
you
want
to
introduce
this
one.
H
Let
me
share
a
link
to
the
ether
path
yeah.
So,
as
some
of
you
know,
users
who
opt
into
telemetry,
sometimes
they
usually
also
opt
into
the
crash
channel
that
we
have
and
they're
sending
crash
information
about
all
the
crashes
that
occurred
in
their
clusters
and
we
have
a
crash
dashboard.
Maybe
I'll
share
my
screen.
C
H
Thanks
so
here
we
can
see
the
dashboard
for
all
the
crashes
and
we
have
a
search
page
that
we
can
go
over
all
sorts
of
specific
searches
according
to
versions
and
demons
dates
and
everything.
H
So
whenever
a
user
sees
a
crash
in
their
cluster,
they
can
go
and
search
tracker
for
the
crash,
signature
and
they'll
be
able
to
see
the
status
of
that
crash.
Maybe
it's
not
even
a
bug.
Maybe
it
is
a
real
issue
and
there's
a
fix
for
it.
So
for
that
we
have
a
new
telemetry
crashes,
bot
that
tries
to
find
a
corresponding
issue
for
each
crash
signature.
H
So,
for
example,
let's
see
yeah,
we
do
have
maybe
I'll
say
just
a
few
words
about
the
search
page
here
I
I
guess
most
of
you
have
already
seen
that,
but
just
in
case
so
you
can
see
the
crash
signature,
which
is
a
new
signature
that
we
created
on
the
back
end
that
groups
more
crash
events
together,
you
can
see
once
the
first
time
we
encountered
that
crash
in
telemetry
once
last
time.
How
many
crashes
in.
H
Yeah,
okay
cool,
so
so
the
crash
crash
count
corresponds
to
the
time
frame.
Here,
that's
the
total
crash
count
and
that's
just
in
time
frame.
So
now
we
just
chose
new
fingerprints
in
this
time
window.
But
if
we
change
it,
you
can
see
that,
for
example,
this
signature
has
total
number
of
206
crash
counts,
but
in
the
last
30
days
we
saw
that
only
13
times.
H
You
can
see
the
number
of
clusters
that
were
affected
by
this
crash
and
all
the
all
the
versions
for
the
demons
that
are
reporting
this
crash
yeah
and
if
you
scroll
sideways,
you
can
also
see
the
assert
function
and
the
assert
condition
if
they
exist-
and
here
we
have
here,
we
have
a
signature
that
the
original
signature
is
reported
by
the
user.
So
that's
the
client-side
signature,
and
here
we
have
status
of
that
signature.
H
So
we
can
click
on
that
and
for
for
the
signature
page,
we
have
more
detailed
information.
You
can
see
the
pressure
currents
by
diversion.
You
can
see
the
the
sanitized
back
trace
that
helps
to
create
the
signature
itself
by
the
way.
If
you
click
on
on
each
of
these
frames,
you
can
see
all
the
crashes
that
occurred
that
had
this
frame
in
their
back
trace,
so
that
can
be
very
useful
as
well.
H
In
addition,
you
can
see
the
the
graph
for
the
daily
occurrences
and,
of
course
this
is
just
for
the
last
two
years.
You
can
change
the
time
frame
as
well.
H
You
can
see
all
the
affected
clusters,
their
their
size,
all
sorts
of
other
information
about
them.
You
can
also
click
on
on
the
specific
cluster
and
see
more
graphs
for
that
specific
cluster.
Like
a
cluster
x-ray-
and
here
you
can
see
an
actual
crash
example
where
you
you
have
the
exact
the
exact,
maybe
that's
too
small,
too.
The
exact
crash
dump
here.
H
We
want
for
each
one
of
these
signatures,
a
corresponding
tracker
issue,
so,
for
example,
this
signature,
the
bot,
opened
a
new
issue
for
it.
It
populated
all
the
affected
versions.
So
far,
all
of
the
signatures
that
were
received
from
the
client,
the
signature
that
we
generated
on
the
server
side
and
then
it
populated
the
description
with
a
link
to
the
dashboard
and
with
all
the
other
details.
So,
for
example,
the
asserts
the
sanitize
the
vectorize
and
I
crushed
crashdown
for
example.
H
Now
the
thing
is
that
there
are
about
2
000
crash
signatures,
so
we
had
a
sort
of
a
test
run,
a
few,
a
few
dozens
of
signatures
that
we
opened
tickets
for,
and
I
think
all
in
all,
it
went
pretty
well
and
we
want
to
know
if
we
can
go
ahead
and
open
the
rest
of
the
issues
or
decide
on
a
cadence
that
we
want
to
open
issues
every
week.
H
H
I
just
want
to
give
another
example
here,
so
the
bot
will
not
always
just
open
a
new
issue.
H
It
scans
all
of
of
tracker
for
the
crash
signatures,
so
here,
for
example,
the
bot
found
a
bug
that
was
already
resolved
that
had
the
crush
signature
populated
somewhere
in
the
ticket,
but
you
can
see
that
the
affected
versions
was
1424
and
there
yeah
there
are
no
backboards
here,
but
if
there
were
backwards
we
would
go
ahead
and
take
their
target
versions
as
well.
H
So
we
encountered
new
crash
events
in
telemetry
that
were
of
a
newer
version
than
the
one
that
was
fixed.
For
example,
you
can
see
the
15
version
here
so
since
that
issue
was
classified
as
resolved,
it
means
that
it
was
a
real
self
bug.
So
we
decided
to
open
a
new
issue
and
to
relate
that
to
the
close
one.
H
This
means
that
in
case
you've
seen
tracker
issues
that
are
not
safe,
bugs.
Please
use
other
status
to
close
it
other
than
resolve
or
need
more
information.
So
you
can
either
use
closed.
Not
a
bug
rejected,
won't
fix
a
status
that
indicates
that
we
don't
actually
need
to
provide
a
fix
for
that.
H
So
this
is
one
thing
and
the
other
is
when
you
mark
an
issue
as
a
duplicate
issue,
tracker
will
let
you
do
that
without
changing
its
status.
So
you
can.
You
can
say
that
this
issue
duplicates
a
different
issue,
but
the
status
will
still.
H
Stay
as
a
new
status,
so
please
make
sure
you're
also
changing
the
status
as
well
to
a
duplicate
and
that
the
original
as
a
status
I
did
it
either
than
duplicate
so
again,
either
it's
open
or
it's
closed,
but
not
not
a
duplicate
status.
H
Oh
yeah,
another
thing
that
I
encountered
was
in
case.
There
are
several
issues
that
are
marked
as
a
duplicate
to
an
original
issue.
H
Please
make
sure
that
they
all
point
to
the
original
and
not
in
a
chain
like
like
in
the
list,
duplicate
to
a
duplicate
or
duplicate
to
an
original
that
makes
life
easier.
I
guess
for
everyone.
D
I
wonder
if
we
should
find
a
brave
lead
who
is
willing
to
devote
some
time
to
do
triage
and
then
open,
like
all
the
issues
for
like
that
one,
the
project,
maybe
that
would
make
sense.
C
H
My
other
question
was
that
does
the
bug
queue
exclude
these
tickets
because
I
saw
that
on
the
crash
queue
we
are
looking
in
the
filters
we
are
relying
on
the
the
source,
but
I'm
not
sure
that
here
we
will.
I
mean
we're
not.