You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by de...@apache.org on 2017/04/17 17:13:05 UTC

[1/2] incubator-trafficcontrol git commit: This closes #474

Repository: incubator-trafficcontrol
Updated Branches:
  refs/heads/master 2a982275a -> 65db0fe51


This closes #474


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/65db0fe5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/65db0fe5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/65db0fe5

Branch: refs/heads/master
Commit: 65db0fe51e09b80879b8b06c502e342a2d9f9167
Parents: 6a767fa
Author: Dewayne Richardson <de...@apache.org>
Authored: Mon Apr 17 11:12:55 2017 -0600
Committer: Dewayne Richardson <de...@apache.org>
Committed: Mon Apr 17 11:12:55 2017 -0600

----------------------------------------------------------------------

----------------------------------------------------------------------



[2/2] incubator-trafficcontrol git commit: optimizes api/version/deliveryservices and api/version/deliveryservices/:id by joining tables and avoiding n+1 queries. also fixes a couple of tests.

Posted by de...@apache.org.
optimizes api/version/deliveryservices and api/version/deliveryservices/:id by joining tables and avoiding n+1 queries. also fixes a couple of tests.


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/6a767fa7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/6a767fa7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/6a767fa7

Branch: refs/heads/master
Commit: 6a767fa7c6cc373938e95180d25df8e8807efd10
Parents: 2a98227
Author: Jeremy Mitchell <mi...@gmail.com>
Authored: Mon Apr 17 11:03:52 2017 -0600
Committer: Dewayne Richardson <de...@apache.org>
Committed: Mon Apr 17 11:12:55 2017 -0600

----------------------------------------------------------------------
 traffic_ops/app/lib/API/Deliveryservice.pm      | 41 +++++++++++++---
 .../app/lib/Fixtures/DeliveryserviceRegex.pm    | 51 +++++++++++++++++++-
 traffic_ops/app/lib/Fixtures/Regex.pm           | 48 ++++++++++++++++++
 .../app/t/api/1.1/deliveryserviceserver.t       |  2 +-
 .../app/t/api/1.2/deliveryservice_matches.t     |  4 +-
 5 files changed, 134 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/6a767fa7/traffic_ops/app/lib/API/Deliveryservice.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/API/Deliveryservice.pm b/traffic_ops/app/lib/API/Deliveryservice.pm
index 1d41fbd..4297bd5 100644
--- a/traffic_ops/app/lib/API/Deliveryservice.pm
+++ b/traffic_ops/app/lib/API/Deliveryservice.pm
@@ -59,13 +59,17 @@ sub index {
 		$criteria{'me.id'} = { -in => \@ds_ids },;
 	}
 
-	my $rs_data = $self->db->resultset("Deliveryservice")->search( \%criteria, { prefetch => [ 'cdn', 'profile', 'type' ], order_by => 'me.' . $orderby } );
+	my $rs_data = $self->db->resultset("Deliveryservice")->search(
+		\%criteria,
+		{ prefetch => [ 'cdn', { 'deliveryservice_regexes' => { 'regex' => 'type' } }, 'profile', 'type' ], order_by => 'me.' . $orderby }
+	);
+
 	while ( my $row = $rs_data->next ) {
 
 		# build example urls for each delivery service
 		my @example_urls = ();
-		my $cdn_domain   = $self->get_cdn_domain_by_ds_id( $row->id );
-		my $regexp_set   = &UI::DeliveryService::get_regexp_set( $self, $row->id );
+		my $cdn_domain   = $row->cdn->domain_name;
+		my $regexp_set   = $self->get_regexp_set( $row->deliveryservice_regexes );
 		@example_urls = &UI::DeliveryService::get_example_urls( $self, $row->id, $regexp_set, $row, $cdn_domain, $row->protocol );
 
 		push(
@@ -144,7 +148,10 @@ sub show {
 		return $self->forbidden() if ( !exists( $map{$id} ) );
 	}
 
-	my $rs = $self->db->resultset("Deliveryservice")->search( { id => $id } );
+	my $rs = $self->db->resultset("Deliveryservice")->search(
+		{ 'me.id' => $id },
+		{ prefetch => [ 'cdn', { 'deliveryservice_regexes' => { 'regex' => 'type' } }, 'profile', 'type' ] }
+	);
 	while ( my $row = $rs->next ) {
 
 		# build the matchlist (the list of ds regexes and their type)
@@ -163,8 +170,8 @@ sub show {
 
 		# build example urls for the delivery service
 		my @example_urls = ();
-		my $cdn_domain   = $self->get_cdn_domain_by_ds_id( $row->id );
-		my $regexp_set   = &UI::DeliveryService::get_regexp_set( $self, $row->id );
+		my $cdn_domain   = $row->cdn->domain_name;
+		my $regexp_set   = $self->get_regexp_set( $row->deliveryservice_regexes );
 		@example_urls = &UI::DeliveryService::get_example_urls( $self, $row->id, $regexp_set, $row, $cdn_domain, $row->protocol );
 
 		push(
@@ -316,7 +323,7 @@ sub update {
 
 		# build example urls
 		my @example_urls  = ();
-		my $cdn_domain   = $self->get_cdn_domain_by_ds_id( $rs->id );
+		my $cdn_domain    = $rs->cdn->domain_name;
 		my $regexp_set   = &UI::DeliveryService::get_regexp_set( $self, $rs->id );
 		@example_urls = &UI::DeliveryService::get_example_urls( $self, $rs->id, $regexp_set, $rs, $cdn_domain, $rs->protocol );
 
@@ -495,7 +502,7 @@ sub create {
 
 		# build example urls
 		my @example_urls  = ();
-		my $cdn_domain   = $self->get_cdn_domain_by_ds_id( $insert->id );
+		my $cdn_domain   = $insert->cdn->domain_name;
 		my $regexp_set   = &UI::DeliveryService::get_regexp_set( $self, $insert->id );
 		@example_urls = &UI::DeliveryService::get_example_urls( $self, $insert->id, $regexp_set, $insert, $cdn_domain, $insert->protocol );
 
@@ -1107,4 +1114,22 @@ sub create_default_ds_regex {
 
 }
 
+sub get_regexp_set {
+	my $self    	= shift;
+	my @ds_regexes 	= shift;
+
+	my $regexp_set;
+	my $i = 0;
+
+	foreach my $ds_regex (@ds_regexes) {
+		$regexp_set->[$i]->{id}         = $ds_regex->id;
+		$regexp_set->[$i]->{pattern}    = $ds_regex->regex->pattern;
+		$regexp_set->[$i]->{type}    	= $ds_regex->regex->type->name;
+		$regexp_set->[$i]->{set_number} = $ds_regex->set_number;
+		$i++;
+	}
+
+	return $regexp_set;
+}
+
 1;

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/6a767fa7/traffic_ops/app/lib/Fixtures/DeliveryserviceRegex.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/Fixtures/DeliveryserviceRegex.pm b/traffic_ops/app/lib/Fixtures/DeliveryserviceRegex.pm
index 7b25146..7aa3b9d 100644
--- a/traffic_ops/app/lib/Fixtures/DeliveryserviceRegex.pm
+++ b/traffic_ops/app/lib/Fixtures/DeliveryserviceRegex.pm
@@ -114,7 +114,7 @@ my %definition_for = (
 			set_number      => 0,
 		},
 	},
-		target_4 => {
+	target_4 => {
 		new   => 'DeliveryserviceRegex',
 		using => {
 			deliveryservice => 700,
@@ -122,6 +122,55 @@ my %definition_for = (
 			set_number      => 0,
 		},
 	},
+	target_5 => {
+		new   => 'DeliveryserviceRegex',
+		using => {
+			deliveryservice => 800,
+			regex           => 1400,
+			set_number      => 0,
+		},
+	},
+	target_6 => {
+		new   => 'DeliveryserviceRegex',
+		using => {
+			deliveryservice => 900,
+			regex           => 1500,
+			set_number      => 0,
+		},
+	},
+	target_7 => {
+		new   => 'DeliveryserviceRegex',
+		using => {
+			deliveryservice => 1000,
+			regex           => 1600,
+			set_number      => 0,
+		},
+	},
+	target_8 => {
+		new   => 'DeliveryserviceRegex',
+		using => {
+			deliveryservice => 1100,
+			regex           => 1700,
+			set_number      => 0,
+		},
+	},
+	target_9 => {
+		new   => 'DeliveryserviceRegex',
+		using => {
+			deliveryservice => 1200,
+			regex           => 1800,
+			set_number      => 0,
+		},
+	},
+	target_10 => {
+		new   => 'DeliveryserviceRegex',
+		using => {
+			deliveryservice => 1300,
+			regex           => 1900,
+			set_number      => 0,
+		},
+	},
+
 );
 
 sub get_definition {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/6a767fa7/traffic_ops/app/lib/Fixtures/Regex.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/Fixtures/Regex.pm b/traffic_ops/app/lib/Fixtures/Regex.pm
index b48b48e..090fa7b 100644
--- a/traffic_ops/app/lib/Fixtures/Regex.pm
+++ b/traffic_ops/app/lib/Fixtures/Regex.pm
@@ -122,6 +122,54 @@ my %definition_for = (
 			type => 19,
 		},
 	},
+	hr_target_5 => {
+		new => 'Regex',
+		using => {
+			id      => 1400,
+			pattern => '.*\.target-ds5\..*',
+			type => 19,
+		},
+	},
+	hr_target_6 => {
+		new => 'Regex',
+		using => {
+			id      => 1500,
+			pattern => '.*\.target-ds6\..*',
+			type => 19,
+		},
+	},
+	hr_target_7 => {
+		new => 'Regex',
+		using => {
+			id      => 1600,
+			pattern => '.*\.target-ds7\..*',
+			type => 19,
+		},
+	},
+	hr_target_8 => {
+		new => 'Regex',
+		using => {
+			id      => 1700,
+			pattern => '.*\.target-ds8\..*',
+			type => 19,
+		},
+	},
+	hr_target_9 => {
+		new => 'Regex',
+		using => {
+			id      => 1800,
+			pattern => '.*\.target-ds9\..*',
+			type => 19,
+		},
+	},
+	hr_target_10 => {
+		new => 'Regex',
+		using => {
+			id      => 1900,
+			pattern => '.*\.target-ds10\..*',
+			type => 19,
+		},
+	},
 );
 
 sub get_definition {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/6a767fa7/traffic_ops/app/t/api/1.1/deliveryserviceserver.t
----------------------------------------------------------------------
diff --git a/traffic_ops/app/t/api/1.1/deliveryserviceserver.t b/traffic_ops/app/t/api/1.1/deliveryserviceserver.t
index c798d2d..a7124c8 100644
--- a/traffic_ops/app/t/api/1.1/deliveryserviceserver.t
+++ b/traffic_ops/app/t/api/1.1/deliveryserviceserver.t
@@ -42,7 +42,7 @@ ok $t->post_ok( '/login', => form => { u => 'portal', p => Test::TestHelper::ADM
 	->or( sub { diag $t->tx->res->content->asset->{content}; } );
 
 $t->get_ok("/api/1.1/deliveryserviceserver.json")->status_is(200)->or( sub { diag $t->tx->res->content->asset->{content}; } )
-	->json_is( "/response/0/server", "100" )->json_is( "/response/0/deliveryService", "100" )->json_is( "/limit", "20" )
+	->json_is( "/response/0/server", 100 )->json_is( "/response/0/deliveryService", 100 )->json_is( "/limit", 20 )
 	->json_is( "/orderby", "deliveryservice" );
 
 ok $t->get_ok('/logout')->status_is(302)->or( sub { diag $t->tx->res->content->asset->{content}; } );

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/6a767fa7/traffic_ops/app/t/api/1.2/deliveryservice_matches.t
----------------------------------------------------------------------
diff --git a/traffic_ops/app/t/api/1.2/deliveryservice_matches.t b/traffic_ops/app/t/api/1.2/deliveryservice_matches.t
index a03adad..e4f2ab9 100644
--- a/traffic_ops/app/t/api/1.2/deliveryservice_matches.t
+++ b/traffic_ops/app/t/api/1.2/deliveryservice_matches.t
@@ -42,11 +42,11 @@ ok $t->post_ok( '/api/1.1/user/login', json => { u => Test::TestHelper::ADMIN_US
 
 ok $t->get_ok("/api/1.2/deliveryservice_matches.json")->status_is(200)->or( sub { diag $t->tx->res->content->asset->{content}; } )
 	->json_has( '/response', 'has a response' )->json_is( '/response/0/dsName', 'steering_ds1' )->json_has( '/response/0/patterns', 'has a first match' )
-	->json_is( '/response/1/dsName', 'test_ds1' )->json_has( '/response/1/patterns', 'has a second match' ), 'Query matches';
+	->json_is( '/response/1/dsName', 'steering_ds2' )->json_has( '/response/1/patterns', 'has a second match' ), 'Query matches';
 
 ok $t->get_ok("/api/1.2/deliveryservice_matches.json?format=file")->status_is(200)->or( sub { diag $t->tx->res->content->asset->{content}; } )
 	->json_hasnt( '/response', 'should not have a response' )->json_is( '/0/dsName', 'steering_ds1' )->json_has( '/0/patterns', 'has a first match' )
-	->json_is( '/1/dsName', 'test_ds1' )->json_has( '/1/patterns', 'has a second match' ), 'Query matches';
+	->json_is( '/1/dsName', 'steering_ds2' )->json_has( '/1/patterns', 'has a second match' ), 'Query matches';
 
 ok $t->get_ok('/logout')->status_is(302)->or( sub { diag $t->tx->res->content->asset->{content}; } );