At this point, I think the Perl tests have rotted so much and I don't want
to put anymore effort into them.  I say as long as we have Go coverage
(because the API tests will still go through to Perl if no Go catches the
route), then I'm good.

-Dew

On Tue, Jun 26, 2018 at 8:14 AM Robert Butts <r...@apache.org> wrote:

> I had planned on deleting tests for deleted functions (which have tests in
> Go), and starting with functions whose tests aren't depended on by any
> other tests, and working our way up. Unless anyone objects.
>
>
> On Mon, Jun 25, 2018 at 8:17 AM, Rawlin Peters <rawlin.pet...@gmail.com>
> wrote:
>
> > Alright, so we have a compromise on the dead Perl API code, but what
> > about the Perl tests that use the routed functions we're changing to
> > just return an error? We can remove the Perl tests that test the dead
> > endpoints, but what about any live Perl endpoints that depend on dead
> > ones?
> > Move the Perl API code into a new test-only function and call that
> > from the test?
> > Just delete the test because it depends on a dead endpoint?
> > Delete and rewrite it in the Go testing framework?
> >
> > - Rawlin
> >
> > On Sun, Jun 24, 2018 at 1:45 PM, Dan Kirkwood <dang...@gmail.com> wrote:
> > > On Sat, Jun 23, 2018 at 10:05 AM Robert Butts <r...@apache.org> wrote:
> > >
> > >> >as long as we have 100% feature complete with the Go code (which I
> > think
> > >> we're fairly close?)
> > >> We are not close. We are at 108 of 240 endpoints.
> > >>
> > >> >if we do not treat the tests as first class citizens (meaning we
> > implement
> > >> an Go endpoint and build coverage as we go), then why bother at all?
> > >> It doesn't have to be all or nothing. There's a happy medium between
> > >> requiring tests for every line of code, and having no tests.
> > >>
> > >> >I also thought that we were supporting removing the Perl in the next
> TC
> > >> 3.0 major release (several emails back).
> > >> That vote was to remove the Perl GUI, not all of Perl.
> > >>
> > >>
> > >> >Removing dead Perl code can be tricky,  since the interdependencies
> are
> > >> not always obvious, and can lead to unforeseen missing functionality.
> > >>
> > >> That's a good point. But let me ask this: in the event we miss some
> > dynamic
> > >> Perl calling a function that was removed, which is worse: to make that
> > >> function fail, or to make that function call dead code, which has been
> > >> changed and modified to behave differently in Go, and the undead Perl
> is
> > >> now doing the wrong thing?
> > >>
> > >
> > > In the case where a function is removed that overrode some default
> > > functionality (which happens a lot in this code),  the default code
> would
> > > not fail, but produce different results.  Not quite helpful..
>  However,
> > > the idea you present below mitigates that risk..
> > >
> > >
> > >> So, there might be a middle ground. How about this: what if we remove
> > the
> > >> Perl routes from the routes file, and change the functions to
> > immediately
> > >> return an informative error message? That way, if we miss some dynamic
> > Perl
> > >> still calling the code, we immediately get a useful message, so it's
> > easy
> > >> to find and fix. And we don't call old, wrong code that could do
> > something
> > >> dangerous and bad. And additionally, contributors in the community
> won't
> > >> see the functions that look real, and accidentally waste their time
> > >> modifying them.
> > >>
> > >
> > > This,   I can live with,  and I think it represents a good way forward:
> > >  keep the signature of all functions -- do not remove any modules and
> > > replace the guts of each of those functions with a sensible error --
> even
> > > with a stack trace so we can tell exactly what code path was used to
> get
> > > there.   It should be fairly straightforward to create a utility
> function
> > > that can be used throughout so it happens consistently.
> > >
> > >
> > >
> > >> Those who voted against removing the dead code, does that sound like a
> > >> compromise you could live with?
> > >
> > >
> > > That's a yes from me.   Thanks for coming up with a solid compromise..
> > >
> > > -Dan
> > >
> > >
> > >> On Thu, Jun 21, 2018 at 7:52 AM, Dewayne Richardson <
> dewr...@apache.org
> > >
> > >> wrote:
> > >>
> > >> > I'm +100 on removing dead Perl code as long as we have 100% feature
> > >> > complete with the Go code (which I think we're fairly close?).
> Rawlin
> > >> you
> > >> > are correct in that there is a spider web of interdependencies in
> > Perl,
> > >> but
> > >> > without feature parity removing any of that dead code is like
> pulling
> > a
> > >> > single thread from a sweater without unraveling the entire thing.
> In
> > >> other
> > >> > words let's put our efforts around Go features and moving forward.
> > >> >
> > >> > As for tests, I realize writing tests "takes time", but we have to
> > build
> > >> a
> > >> > safety net for the Traffic Ops Go API's going forward.  I also
> realize
> > >> that
> > >> > writing and maintaining the API tests is like maintaining two code
> > bases,
> > >> > but if we do not treat the tests as first class citizens (meaning we
> > >> > implement an Go endpoint and build coverage as we go), then why
> > bother at
> > >> > all?  I'm pretty sure there is support for more testing and I also
> > think
> > >> it
> > >> > has to be a "community" effort.
> > >> >
> > >> > I also thought that we were supporting removing the Perl in the next
> > TC
> > >> 3.0
> > >> > major release (several emails back).
> > >> >
> > >> > -Dew
> > >> >
> > >> > On Wed, Jun 20, 2018 at 9:54 AM Rawlin Peters <
> > rawlin.pet...@gmail.com>
> > >> > wrote:
> > >> >
> > >> > > Hey Traffic Controllers,
> > >> > >
> > >> > > In order to accelerate our progress toward using and developing
> > >> > > traffic_ops_golang as a community, I'd like to propose that we
> > remove
> > >> > > all of the dead Perl Traffic Ops API code in the repo. Many
> > endpoints
> > >> > > have been rewritten in Go at this point, and by keeping the
> obsolete
> > >> > > Perl endpoints in the repo we're not making it clear that new
> > >> > > enhancements have to be made in traffic_ops_golang and Traffic
> > Portal
> > >> > > in order to actually work and survive long-term (as opposed to the
> > >> > > legacy Perl Traffic Ops API and UI which is planned to be
> deprecated
> > >> > > and removed in the near future).
> > >> > >
> > >> > > Right now the only thing keeping the dead Perl endpoints from
> being
> > >> > > deleted is the Perl test framework that depends on them.
> > Unfortunately
> > >> > > the tests are all caught in a spider web of interdependency, so we
> > >> > > can't simply remove tests for APIs that have been rewritten in Go
> > >> > > without breaking other tests. However, we think there are a few
> ways
> > >> > > we should be able to accomplish this:
> > >> > >
> > >> > > 1. Make the Perl integration tests actually make HTTP calls which
> > can
> > >> > > then be handled by traffic_ops_golang, rather than calling the
> Perl
> > >> > > API router directly.
> > >> > > 2. Remove test interdependencies by mocking out the test data.
> > >> > > 3. Rewrite all the Perl tests in the go API test framework and
> > remove
> > >> > > the Perl tests.
> > >> > >
> > >> > > We are also open to other suggestions that allow us to remove dead
> > Perl
> > >> > > code :).
> > >> > >
> > >> > > Please +1 or -1 if you agree or disagree; all feedback is welcome.
> > >> > >
> > >> > > - Rawlin
> > >> > >
> > >> >
> > >>
> >
>

Reply via email to