The attachment didn't send; here's a pastebin of the same output:
https://pastebin.com/Lj1cH4p6.

- Rawlin
On Mon, Jul 2, 2018 at 9:06 AM Rawlin Peters <rawlin.pet...@gmail.com> wrote:
>
> I just discovered that there are a handful of Perl TO UI pages that
> also depend on Perl API endpoints (screenshot attached). So, I think
> we should either:
> 1. Fix the Perl TO UI pages to make requests to traffic_ops_golang
> (just changing the URL from /api/1.1/cachegroups.json to
> http://localhost:<traffic_ops_golang port>/api/1.1/cachegroups.json
> doesn't work; TO golang gives the error "error getting cookie: http:
> named cookie not present")
> 2. Remove these Perl TO UI pages that have a direct equivalent in
> Traffic Portal (which properly makes requests to traffic_ops_golang)
> 3. Accept that obsolete Perl UI pages can be "broken" (since they're
> dependent upon Perl endpoints that have been rewritten in Go) and
> display a warning on the Perl UI page
>
> My vote would be for option 2 because option 1 would be wasted effort
> long-term, and it should be very easy to verify that TP has all the
> same functionality as the TO UI equivalent before removing a page. I
> know we're really close to getting TP parity and have discussed
> removing the entire Perl UI after a major release or two, but I think
> we can reap some immediate benefits by removing obsolete TO UI pages
> that have a direct equivalent in TP now (at least the ones in the
> attached screenshot) without having to delete the entire TO UI. For
> instance, if an endpoint has already been rewritten in
> traffic_ops_golang, you wouldn't have to update both implementations
> of the API just to keep the old Perl UI intact.
>
> Maybe we could even replace the obsolete pages with a configurable
> link to the TP equivalent. We'd get the benefit of having more users
> migrate to TP who could help find gaps in parity. We'd also somewhat
> alleviate the issue of PRs implementing new features in Perl rather
> than Go and TP.
>
> Does anyone see any problems with this option (2)?
>
> - Rawlin
>
> On Tue, Jun 26, 2018 at 9:48 AM Dewayne Richardson <dewr...@apache.org> wrote:
> >
> > 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