"""Read-only acceptance of the installed existing-data industry release.""" import argparse import hashlib import json from pathlib import Path import platform import sys ROOT = Path(__file__).resolve().parents[1] def main(): parser = argparse.ArgumentParser(description=__doc__) sources = parser.add_mutually_exclusive_group(required=True) sources.add_argument('--snapshot') sources.add_argument('--registry') sources.add_argument('--db') parser.add_argument('--voc-runtime') parser.add_argument('--monitoring-store', required=True) args = parser.parse_args() sys.path.insert(0, str(ROOT / 'server/voc-library')) if not args.snapshot: assert args.voc_runtime and (Path(args.voc_runtime) / 'board_library.py').is_file(), 'EXISTING_VOC_RUNTIME_REQUIRED' # Monitor and the existing core resolve separately. Core modules are never installed by this release. sys.path.append(str(Path(args.voc_runtime).resolve())) from industry_monitor import run release = json.loads((ROOT / 'RELEASE.json').read_bytes()) config = {key: getattr(args, key) for key in ('snapshot', 'registry', 'db') if getattr(args, key)} config.update(monitoringStore=args.monitoring_store, policyUsageReview=str(ROOT / 'data/policy-review/policy-usage.json'), policyUsageSha256=release['policyReviewSha256']) generation = release['generation'] def query(op, **kwargs): result = run(config, dict(op=op, generation=generation, **kwargs)) assert result['ok'] and result['readOnly'] and result['databaseWrites'] == 0, op return result contract = query('contract') query('overview') primary = query('reviews', filters={'platform': 'jd', 'shopId': '1000084104'}) assert primary['products'] == 165 and primary['reviewRows'] == 746 and primary['uniqueReadableTexts'] == 701 listings = query('listings', filters={'platform': 'jd', 'shopId': '1000084104'}) policies = query('policies', policyQuery={'application': 'sodium-claims'}) review = policies['applications']['reviewedEvidence'] assert (review['verifiedClauses'], review['pendingClauses'], review['originalDocuments']) == (12, 19, 13) assert len(policies['applications']['selectedWorkflow']['reviewedClauses']) == 3 workshop = query('workshop', filters={'category': 'banmian'}) query('rankings') query('plan') query('contract') # Recheck the library generation after all reads. print(json.dumps(dict(ok=True, readOnly=True, databaseWrites=0, paidCalls=0, runtime=platform.python_version(), nativePython39Verified=sys.version_info[:2] == (3, 9), generation=contract['generation'], primaryStore={k: primary[k] for k in ('products', 'reviewRows', 'uniqueReadableTexts')}, verifiedPolicyClauses=review['verifiedClauses'], pendingPolicyClauses=review['pendingClauses'], policyOriginals=review['originalDocuments'], commands=contract['commands'], completedProbes=['contract', 'overview', 'reviews', 'listings', 'policies', 'workshop', 'rankings', 'plan'], productionDeployed=False, overallMainlineComplete=False), ensure_ascii=False, indent=2)) if __name__ == '__main__': try: main() except Exception as error: print(json.dumps(dict(ok=False, error=str(error) if isinstance(error, (AssertionError, ValueError)) else type(error).__name__, databaseWrites=0, paidCalls=0))) sys.exit(1)