~ltrager/maas/remove_di_from_kernel_opts

« back to all changes in this revision

Viewing changes to src/maasserver/dns/tests/test_zonegenerator.py

  • Committer: Lee Trager
  • Date: 2016-10-22 06:06:12 UTC
  • mfrom: (5457.1.44 maas)
  • Revision ID: lee.trager@canonical.com-20161022060612-ukar20f6ffs45nas
Merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
 
6
6
__all__ = []
7
7
 
 
8
 
8
9
import random
9
10
import socket
10
11
from unittest.mock import (
15
16
from urllib.parse import urlparse
16
17
 
17
18
from maasserver import server_address
 
19
from maasserver.dbviews import register_view
18
20
from maasserver.dns import zonegenerator
19
21
from maasserver.dns.zonegenerator import (
20
 
    DNSException,
21
22
    get_dns_search_paths,
22
23
    get_dns_server_address,
23
24
    get_hostname_dnsdata_mapping,
32
33
    NODE_STATUS,
33
34
    RDNS_MODE,
34
35
)
 
36
from maasserver.exceptions import UnresolvableHost
35
37
from maasserver.models import (
36
38
    Config,
37
39
    Domain,
41
43
from maasserver.models.staticipaddress import HostnameIPMapping
42
44
from maasserver.testing.config import RegionConfigurationFixture
43
45
from maasserver.testing.factory import factory
44
 
from maasserver.testing.testcase import MAASServerTestCase
 
46
from maasserver.testing.testcase import (
 
47
    MAASServerTestCase,
 
48
    MAASTransactionServerTestCase,
 
49
)
 
50
from maasserver.utils.orm import transactional
45
51
from maastesting.factory import factory as maastesting_factory
46
52
from maastesting.fakemethod import FakeMethod
47
53
from maastesting.matchers import (
97
103
        self.patch(
98
104
            zonegenerator, 'get_maas_facing_server_addresses',
99
105
            FakeMethod(failure=socket.error))
100
 
        self.assertRaises(DNSException, get_dns_server_address)
 
106
        self.assertRaises(UnresolvableHost, get_dns_server_address)
101
107
 
102
108
    def test_get_dns_server_address_logs_warning_if_ip_is_localhost(self):
103
109
        logger = self.patch(zonegenerator, 'logger')
498
504
            MatchesSetwise(*expected_zones))
499
505
 
500
506
 
501
 
class TestZoneGeneratorTTL(MAASServerTestCase):
 
507
class TestZoneGeneratorTTL(MAASTransactionServerTestCase):
502
508
    """Tests for TTL in :class:ZoneGenerator`."""
503
509
 
 
510
    def setUp(self):
 
511
        register_view("maasserver_discovery")
 
512
        return super().setUp()
 
513
 
 
514
    @transactional
504
515
    def test_domain_ttl_overrides_global(self):
505
516
        global_ttl = random.randint(100, 199)
506
517
        Config.objects.set_config('default_dns_ttl', global_ttl)
525
536
        self.assertItemsEqual(
526
537
            expected_reverse.items(), zones[1]._mapping.items())
527
538
 
 
539
    @transactional
528
540
    def test_node_ttl_overrides_domain(self):
529
541
        global_ttl = random.randint(100, 199)
530
542
        Config.objects.set_config('default_dns_ttl', global_ttl)
551
563
        self.assertItemsEqual(
552
564
            expected_reverse.items(), zones[1]._mapping.items())
553
565
 
 
566
    @transactional
554
567
    def test_dnsresource_address_does_not_affect_addresses_when_node_set(self):
555
568
        # If a node has the same FQDN as a DNSResource, then we use whatever
556
569
        # address_ttl there is on the Node (whether None, or not) rather than
583
596
        self.assertItemsEqual(
584
597
            expected_reverse.items(), zones[1]._mapping.items())
585
598
 
 
599
    @transactional
586
600
    def test_dnsresource_address_overrides_domain(self):
587
601
        # DNSResource.address_ttl _does_, however, override Domain.ttl for
588
602
        # addresses that do not have nodes associated with them.
619
633
        self.assertItemsEqual(
620
634
            expected_reverse.items(), zones[1]._mapping.items())
621
635
 
 
636
    @transactional
622
637
    def test_dnsdata_inherits_global(self):
623
638
        # If there is no ttl on the DNSData or Domain, then we get the global
624
639
        # value.
641
656
        self.assertItemsEqual([], zones[1]._mapping.items())
642
657
        self.assertEqual(None, dnsdata.ttl)
643
658
 
 
659
    @transactional
644
660
    def test_dnsdata_inherits_domain(self):
645
661
        # If there is no ttl on the DNSData, but is on Domain, then we get the
646
662
        # domain value.
663
679
        self.assertItemsEqual([], zones[1]._mapping.items())
664
680
        self.assertEqual(None, dnsdata.ttl)
665
681
 
 
682
    @transactional
666
683
    def test_dnsdata_overrides_domain(self):
667
684
        # If DNSData has a ttl, we use that in preference to anything else.
668
685
        global_ttl = random.randint(100, 199)