"I don't think acceptance tests should loosely associate with real uses,
but they should
be free to delve into weird non-happy-pathways."

Not following - are you saying they should *tightly* associate with real
uses and additonally include non-happy-path?

On Fri, Mar 3, 2017 at 12:57 PM, Casey Stella <ceste...@gmail.com> wrote:

> It is absolutely not a naive question, Matt.  We don't have a lot (or any)
> docs about our integration tests; it's more of a "follow the lead" type of
> thing at the moment, but that should be rectified.
>
> The integration tests spin up and down infrastructure in-process, some of
> which are real and some of which are mock versions of the services.  These
> are good for catching some types of bugs, but often things sneak through,
> like:
>
>    - Hbase and storm can't exist in the same JVM, so HBase is mocked in
>    those cases.
>    - The FileSystem that we get for Hadoop is the LocalRawFileSystem, not
>    truly HDFS.  There are differences and we've run into them..hilariously
> at
>    times. ;)
>    - Things done statically in a bolt are shared across all bolts because
>    they all are threads in the same process
>
> It's good, it catches bugs, it lets us debug things easily, it runs with
> every single build automatically via travis.
> It's bad because it's awkward to get the dependencies isolated sufficiently
> for all of these components to get them to play nice in the same JVM.
>
> Acceptance tests would be run against a real cluster, so they would:
>
>    - run against real components, not testing or mock components
>    - run against multiple nodes
>
> I can imagine a world where we can unify the two to a certain degree in
> many cases if we could spin up a docker version of Metron to run as part of
> the build, but I think in the meantime, we should focus on providing both.
>
> I suspect the reference application is possibly inspiring my suggestions
> here, but I think the main difference here is that the reference
> application is intended to be informational from a end-user perspective:
> it's detailing a use-case that users will understand.  I don't think
> acceptance tests should loosely associate with real uses, but they should
> be free to delve into weird non-happy-pathways.
>
> On Fri, Mar 3, 2017 at 2:16 PM, Matt Foley <ma...@apache.org> wrote:
>
> > Automating stuff that now has to be done manually gets a big +1.
> >
> > But, Casey, could you please clarify the relationship between what you
> > plan to do and the current “integration test” framework?  Will this be in
> > the form of additional integration tests? Or a different test framework?
> > Can it be done in the integration test framework, rather than creating
> new
> > mechanism?
> >
> > BTW, if that’s a naïve question, forgive me, but I could find zero
> > documentation for the existing integration test capability, neither wiki
> > pages nor READMEs nor Jiras.  If there are any docs, please point me at
> > them.  Or even archived email threads.
> >
> > There is also something called the “Reference Application”
> > https://cwiki.apache.org/confluence/display/METRON/
> > Metron+Reference+Application which sounds remarkably like what you
> > propose to automate.  Is there / can there / should there be a
> relationship?
> >
> > Thanks,
> > --Matt
> >
> > On 3/3/17, 7:40 AM, "Otto Fowler" <ottobackwa...@gmail.com> wrote:
> >
> >     +1
> >
> >     I agree with Justin’s points.
> >
> >
> >     On March 3, 2017 at 08:41:37, Justin Leet (justinjl...@gmail.com)
> > wrote:
> >
> >     +1 to both. Having this would especially ease a lot of testing that
> > hits
> >     multiple areas (which there is a fair amount of, given that we're
> > building
> >     pretty quickly).
> >
> >     I do want to point out that adding this type of thing makes the speed
> > of
> >     our builds and tests more important, because they already take up a
> > good
> >     amount of time. There are obviously tickets to optimize these things,
> > but
> >     I would like to make sure we don't pile too much on to every testing
> > cycle
> >     before a PR. Having said that, I think the testing proposed is
> > absolutely
> >     valuable enough to go forward with.
> >
> >     Justin
> >
> >     On Fri, Mar 3, 2017 at 8:33 AM, Casey Stella <ceste...@gmail.com>
> > wrote:
> >
> >     > I also propose, once this is done, that we modify the developer
> > bylaws
> >     and
> >     > the github PR script to ensure that PR authors:
> >     >
> >     > - Update the acceptance tests where appropriate
> >     > - Run the tests as a smoketest
> >     >
> >     >
> >     >
> >     > On Fri, Mar 3, 2017 at 8:21 AM, Casey Stella <ceste...@gmail.com>
> > wrote:
> >     >
> >     > > Hi All,
> >     > >
> >     > > After doing METRON-744, where I had to walk through a manual test
> > of
> >     > every
> >     > > place that Stellar touched, it occurred to me that we should
> script
> >     this.
> >     > > It also occurred to me that some scripts that are run by the PR
> > author
> >     to
> >     > > ensure no regressions and, eventually maybe, even run on an INFRA
> >     > instance
> >     > > of Jenkins would give all of us some peace of mind.
> >     > >
> >     > > I am certain that this, along with a couple other manual tests
> from
> >     other
> >     > > PRs, could form the basis of a really great regression
> > acceptance-test
> >     > > suite and I'd like to propose that we do that, as a community.
> >     > >
> >     > > What I'd like to see from such a suite has the following
> >     characteristics:
> >     > >
> >     > > - Can be run on any Metron cluster, including but not limited to
> >     > > - Vagrant
> >     > > - AWS
> >     > > - An existing deployment
> >     > > - Can be *deployed* from ansible, but must be able to be deployed
> >     > > manually
> >     > > - With instructions in the readme
> >     > > - Tests should be idempotent and independent
> >     > > - Tear down what you set up
> >     > >
> >     > > I think between the Stellar REPL and the fundamental
> scriptability
> > of
> >     the
> >     > > Hadoop services, we can accomplish these tests with a combination
> > of
> >     > shell
> >     > > scripts and python.
> >     > >
> >     > > I propose we break this into the following parts:
> >     > >
> >     > > - Acceptance Testing Framework with a small smoketest
> >     > > - Baseline Metron Test
> >     > > - Send squid data through the squid topology
> >     > > - Add an threat triage alert
> >     > > - Ensure it gets through to the other side with alerts preserved
> >     > > - + Enrichment
> >     > > - Add an enrichment in the enrichment pipeline to the above
> >     > > - + Profiler
> >     > > - Add a profile with a tick of 1 minute to count per destination
> >     > > address
> >     > > - Base PCap test
> >     > > - Something like the manual test for METRON-743 (
> >     > > https://github.com/apache/incubator-metron/pull/467#
> >     > issue-210285324
> >     > > <https://github.com/apache/incubator-metron/pull/467#
> >     > issue-210285324>
> >     > > )
> >     > >
> >     > > Thoughts?
> >     > >
> >     > >
> >     > > Best,
> >     > >
> >     > > Casey
> >     > >
> >     >
> >
> >
> >
> >
>

Reply via email to