Rework address roles, making Address::role optional, rework determining uplink/downlinks/parent/children
This commit is contained in:
@@ -46,8 +46,8 @@ use App\Models\{Address,Domain,Setup,System};
|
||||
* + See COMMON
|
||||
* + Everything else is sent to the HUB or Host or RC (our uplink)
|
||||
*
|
||||
* @see Address::parent()
|
||||
* @see Address::children()
|
||||
* @see Address::uplink()
|
||||
* @see Address::downlinks()
|
||||
*/
|
||||
class RoutingTest extends TestCase
|
||||
{
|
||||
@@ -106,9 +106,9 @@ class RoutingTest extends TestCase
|
||||
// Pick ZC without any session info - we have 0 children
|
||||
$ao = Address::findFTN('101:0/0@a');
|
||||
|
||||
$this->assertEquals($ao->role,Address::NODE_ZC);
|
||||
$this->assertCount(0,$ao->children());
|
||||
$this->assertNull($ao->parent());
|
||||
$this->assertEquals($ao->role_id,Address::NODE_ZC);
|
||||
$this->assertCount(0,$ao->downlinks());
|
||||
$this->assertNull($ao->uplink());
|
||||
}
|
||||
|
||||
// If we have a ZC, make sure we are routing to all it's children
|
||||
@@ -117,7 +117,7 @@ class RoutingTest extends TestCase
|
||||
$this->session_zc();
|
||||
|
||||
$ao = Address::findFTN('101:0/0@a');
|
||||
$this->assertCount(935,$ao->children());
|
||||
$this->assertCount(935,$ao->downlinks());
|
||||
}
|
||||
|
||||
// An RC's parent should be the ZC, when we have session details with parent
|
||||
@@ -126,8 +126,8 @@ class RoutingTest extends TestCase
|
||||
$this->session_zc();
|
||||
|
||||
$ao = Address::findFTN('101:1/0@a');
|
||||
$this->assertEquals($ao->role,Address::NODE_RC);
|
||||
$this->assertEquals('101:0/0.0@a',$ao->parent()->ftn);
|
||||
$this->assertEquals($ao->role_id,Address::NODE_RC);
|
||||
$this->assertEquals('101:0/0.0@a',$ao->uplink()->ftn);
|
||||
}
|
||||
|
||||
// Get a list of active addresses in a Region
|
||||
@@ -136,7 +136,7 @@ class RoutingTest extends TestCase
|
||||
$this->session_rc();
|
||||
|
||||
$ao = Address::findFTN('100:1/0@a');
|
||||
$this->assertEquals(185,$ao->children()->count());
|
||||
$this->assertEquals(185,$ao->downlinks()->count());
|
||||
}
|
||||
|
||||
// An RCs node still collects mail from the RC
|
||||
@@ -146,8 +146,8 @@ class RoutingTest extends TestCase
|
||||
|
||||
// An RCs node should still be the RC
|
||||
$ao = Address::findFTN('100:1/100@a');
|
||||
$this->assertEquals($ao->role,Address::NODE_ACTIVE);
|
||||
$this->assertEquals('100:1/0.0@a',$ao->parent()->ftn);
|
||||
$this->assertEquals($ao->role_id,Address::NODE_NN);
|
||||
$this->assertEquals('100:1/0.0@a',$ao->uplink()->ftn);
|
||||
}
|
||||
|
||||
// An NC collects mail for its children
|
||||
@@ -157,8 +157,8 @@ class RoutingTest extends TestCase
|
||||
|
||||
// A NCs parent should still be the RC
|
||||
$ao = Address::findFTN('100:10/0@a');
|
||||
$this->assertEquals($ao->role,Address::NODE_NC);
|
||||
$this->assertEquals('100:1/0.0@a',$ao->parent()->ftn);
|
||||
$this->assertEquals($ao->role_id,Address::NODE_NC);
|
||||
$this->assertEquals('100:1/0.0@a',$ao->uplink()->ftn);
|
||||
}
|
||||
|
||||
// A Hub still collects mail from NC
|
||||
@@ -168,8 +168,8 @@ class RoutingTest extends TestCase
|
||||
|
||||
// A Hubs parent should still be the NC
|
||||
$ao = Address::findFTN('100:10/20.0@a');
|
||||
$this->assertEquals($ao->role,Address::NODE_HC);
|
||||
$this->assertEquals('100:1/0.0@a',$ao->parent()->ftn);
|
||||
$this->assertEquals($ao->role_id,Address::NODE_HC);
|
||||
$this->assertEquals('100:1/0.0@a',$ao->uplink()->ftn);
|
||||
}
|
||||
|
||||
// A Hub's node still collects mail from Hub
|
||||
@@ -179,8 +179,8 @@ class RoutingTest extends TestCase
|
||||
|
||||
// A Hubs node should still be the Hub
|
||||
$ao = Address::findFTN('100:10/22.0@a');
|
||||
$this->assertEquals($ao->role,Address::NODE_ACTIVE);
|
||||
$this->assertEquals('100:1/0.0@a',$ao->parent()->ftn);
|
||||
$this->assertEquals($ao->role_id,Address::NODE_NN);
|
||||
$this->assertEquals('100:1/0.0@a',$ao->uplink()->ftn);
|
||||
}
|
||||
|
||||
// An RCs parent is us even if we have session details for another RC
|
||||
@@ -189,7 +189,7 @@ class RoutingTest extends TestCase
|
||||
$this->session_rc();
|
||||
|
||||
$ao = Address::findFTN('100:2/0@a');
|
||||
$this->assertNull($ao->parent()?->ftn);
|
||||
$this->assertNull($ao->uplink()?->ftn);
|
||||
}
|
||||
|
||||
// If we also have session details for an NC, then there are less RC nodes
|
||||
@@ -199,7 +199,7 @@ class RoutingTest extends TestCase
|
||||
$this->session_nc();
|
||||
|
||||
$ao = Address::findFTN('100:1/0@a');
|
||||
$this->assertCount(185-36,$ao->children());
|
||||
$this->assertCount(185-36,$ao->downlinks());
|
||||
}
|
||||
|
||||
// If we also have session details for an Hub, then there are less RC nodes
|
||||
@@ -211,10 +211,10 @@ class RoutingTest extends TestCase
|
||||
$ao->system->sessions()->attach([$ao->zone_id=>['sespass'=>'ABCD']]);
|
||||
|
||||
$ao = Address::findFTN('100:1/0@a');
|
||||
$this->assertCount(185-6,$ao->children());
|
||||
$this->assertCount(185-6,$ao->downlinks());
|
||||
|
||||
$ao = Address::findFTN('100:10/22@a');
|
||||
$this->assertEquals('100:10/20.0@a',$ao->parent()->ftn);
|
||||
$this->assertEquals('100:10/20.0@a',$ao->uplink()->ftn);
|
||||
}
|
||||
|
||||
// If we also have session details for an Hub, then there are less RC nodes
|
||||
@@ -223,7 +223,7 @@ class RoutingTest extends TestCase
|
||||
$this->session_hub();
|
||||
|
||||
$ao = Address::findFTN('100:10/22@a');
|
||||
$this->assertEquals('100:10/20.0@a',$ao->parent()->ftn);
|
||||
$this->assertEquals('100:10/20.0@a',$ao->uplink()->ftn);
|
||||
}
|
||||
|
||||
// When we have an RC with session details, we route to all its children
|
||||
@@ -232,7 +232,7 @@ class RoutingTest extends TestCase
|
||||
$this->session_nc();
|
||||
|
||||
$ao = Address::findFTN('100:10/0@a');
|
||||
$this->assertCount(35,$ao->children());
|
||||
$this->assertCount(35,$ao->downlinks());
|
||||
}
|
||||
|
||||
public function test_complex_rc_nc_hc()
|
||||
@@ -242,29 +242,29 @@ class RoutingTest extends TestCase
|
||||
$this->session_hub();
|
||||
|
||||
$ao = Address::findFTN('100:1/100.0@a');
|
||||
$this->assertCount(0,$ao->children());
|
||||
$this->assertEquals('100:1/0.0@a',$ao->parent()->ftn);
|
||||
$this->assertCount(0,$ao->downlinks());
|
||||
$this->assertEquals('100:1/0.0@a',$ao->uplink()->ftn);
|
||||
|
||||
// RC
|
||||
$ao = Address::findFTN('100:1/0.0@a');
|
||||
$this->assertCount(186-1-30-6,$ao->children());
|
||||
$this->assertCount(186-1-30-6,$ao->downlinks());
|
||||
|
||||
$ao = Address::findFTN('100:11/0.0@a');
|
||||
$this->assertEquals('100:1/0.0@a',$ao->parent()->ftn);
|
||||
$this->assertEquals('100:1/0.0@a',$ao->uplink()->ftn);
|
||||
|
||||
// NC
|
||||
$ao = Address::findFTN('100:10/0.0@a');
|
||||
$this->assertCount(36-1-6,$ao->children());
|
||||
$this->assertCount(36-1-6,$ao->downlinks());
|
||||
|
||||
$ao = Address::findFTN('100:10/10.0@a');
|
||||
$this->assertEquals('100:10/0.0@a',$ao->parent()->ftn);
|
||||
$this->assertEquals('100:10/0.0@a',$ao->uplink()->ftn);
|
||||
|
||||
// HC
|
||||
$ao = Address::findFTN('100:10/20.0@a');
|
||||
$this->assertCount(6-1,$ao->children());
|
||||
$this->assertCount(6-1,$ao->downlinks());
|
||||
|
||||
$ao = Address::findFTN('100:10/22.0@a');
|
||||
$this->assertEquals('100:10/20.0@a',$ao->parent()->ftn);
|
||||
$this->assertEquals('100:10/20.0@a',$ao->uplink()->ftn);
|
||||
}
|
||||
|
||||
public function test_complex_rc_nc_hc_us()
|
||||
@@ -283,29 +283,29 @@ class RoutingTest extends TestCase
|
||||
$ao->system->sessions()->attach([$ao->zone_id=>['sespass'=>'ABCD']]);
|
||||
|
||||
$ao = Address::findFTN('100:1/100.0@a');
|
||||
$this->assertCount(0,$ao->children());
|
||||
$this->assertEquals('100:1/0.0@a',$ao->parent()?->ftn);
|
||||
$this->assertCount(0,$ao->downlinks());
|
||||
$this->assertEquals('100:1/0.0@a',$ao->uplink()?->ftn);
|
||||
|
||||
// RC
|
||||
$ao = Address::findFTN('100:1/0.0@a');
|
||||
$this->assertCount(186-36-36-1,$ao->children());
|
||||
$this->assertCount(186-36-36-1,$ao->downlinks());
|
||||
|
||||
$ao = Address::findFTN('100:11/0.0@a');
|
||||
$this->assertEquals('100:11/0.0@a',$ao->parent()->ftn);
|
||||
$this->assertEquals('100:11/0.0@a',$ao->uplink()->ftn);
|
||||
|
||||
// NC
|
||||
$ao = Address::findFTN('100:10/0.0@a');
|
||||
$this->assertCount(36-6-1,$ao->children());
|
||||
$this->assertCount(36-6-1,$ao->downlinks());
|
||||
|
||||
$ao = Address::findFTN('100:10/10.0@a');
|
||||
$this->assertNull($ao->parent()?->ftn);
|
||||
$this->assertNull($ao->uplink()?->ftn);
|
||||
|
||||
// HC
|
||||
$ao = Address::findFTN('100:10/20.0@a');
|
||||
$this->assertCount(6-1,$ao->children());
|
||||
$this->assertCount(6-1,$ao->downlinks());
|
||||
|
||||
$ao = Address::findFTN('100:10/22.0@a');
|
||||
$this->assertEquals('100:10/20.0@a',$ao->parent()->ftn);
|
||||
$this->assertEquals('100:10/20.0@a',$ao->uplink()->ftn);
|
||||
Cache::forget('so');
|
||||
}
|
||||
|
||||
@@ -330,9 +330,9 @@ class RoutingTest extends TestCase
|
||||
$ao->system->sessions()->attach([$ao->zone_id=>['sespass'=>'ABCD']]);
|
||||
|
||||
$ao = Address::findFTN('100:10/21.2@a');
|
||||
$this->assertEquals('100:10/21.0@a',$ao->parent()?->ftn);
|
||||
$this->assertEquals('100:10/21.0@a',$ao->uplink()?->ftn);
|
||||
|
||||
$ao = Address::findFTN('100:10/21@a');
|
||||
$this->assertCount(1,$ao->children());
|
||||
$this->assertCount(1,$ao->downlinks());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user