def test_write_cache(self): mock_server_status = {'fake server status': random.uniform(1, 2 ** 32)} status_cache = EntitlementStatusCache() status_cache.server_status = mock_server_status cache_dir = tempfile.mkdtemp() cache_file = os.path.join(cache_dir, 'status_cache.json') status_cache.CACHE_FILE = cache_file status_cache.write_cache() # try to load the file 5 times, if # we still can't read it, fail # we don't know when the write_cache thread ends or # when it starts. Need to track the cache threads # but we do not... tries = 0 while tries <= 5: try: new_status_buf = open(cache_file).read() new_status = json.loads(new_status_buf) break except Exception as e: log.exception(e) tries += 1 time.sleep(.1) continue shutil.rmtree(cache_dir) self.assertEqual(new_status, mock_server_status)
def setUp(self, mock_update): SubManFixture.setUp(self) # Setup mock product and entitlement certs: self.prod_dir = StubProductDirectory( pids=[INST_PID_1, INST_PID_2, INST_PID_3, INST_PID_4]) self.ent_dir = StubEntitlementDirectory([ StubEntitlementCertificate(PROD_2, ent_id=ENT_ID_2), StubEntitlementCertificate(PROD_1, ent_id=ENT_ID_1), StubEntitlementCertificate(product=PROD_4, stacking_id=STACK_1, ent_id=ENT_ID_4), # entitled, but not installed StubEntitlementCertificate(StubProduct("not_installed_product", name="Some Product"), ent_id="SomeSubId"), ]) self.mock_uep = StubUEP() self.status_mgr = EntitlementStatusCache() self.status_mgr.load_status = Mock(return_value=SAMPLE_COMPLIANCE_JSON) self.status_mgr.write_cache = Mock() inj.provide(inj.ENTITLEMENT_STATUS_CACHE, self.status_mgr) inj.provide(inj.PROD_DIR, self.prod_dir) inj.provide(inj.ENT_DIR, self.ent_dir) self.sorter = CertSorter() self.sorter.is_registered = Mock(return_value=True)
def test_write_cache(self): mock_server_status = {'fake server status': random.uniform(1, 2**32)} status_cache = EntitlementStatusCache() status_cache.server_status = mock_server_status cache_dir = tempfile.mkdtemp() cache_file = os.path.join(cache_dir, 'status_cache.json') status_cache.CACHE_FILE = cache_file status_cache.write_cache() def threadActive(name): for thread in threading.enumerate(): if thread.getName() == name: return True return False # If the file exists, and the thread that writes it does not, we know writing has completed while not (os.path.exists(cache_file) and not threadActive("WriteCacheEntitlementStatusCache")): pass try: new_status_buf = open(cache_file).read() new_status = json.loads(new_status_buf) self.assertEquals(new_status, mock_server_status) finally: shutil.rmtree(cache_dir)
def test_no_compliant_until(self, mock_update): # don't want to munge the module scope version of this because # setup will load it for later tests no_compliance_until = copy.deepcopy(SAMPLE_COMPLIANCE_JSON) no_compliance_until["compliantUntil"] = None # build and inject a status cache with new values status_mgr = EntitlementStatusCache() status_mgr.load_status = Mock(return_value=no_compliance_until) status_mgr.write_cache = Mock() inj.provide(inj.ENTITLEMENT_STATUS_CACHE, status_mgr) self.sorter = CertSorter() self.sorter.is_registered = Mock(return_value=True) self.assertTrue(self.sorter.compliant_until is None)
def setUp(self): super(TestEntitlementStatusCache, self).setUp() self.status_cache = EntitlementStatusCache() self.status_cache.write_cache = Mock()