def test_numericvalue(): """Test adding numeric data to service.""" dt = datetime(2015, 1, 1, 0, 0, 0) doc = ServiceDocument('myid', timestamp=dt) doc.add_numericvalue('val1', 1234) doc.add_numericvalue('val2', 12.34) doc.add_numericvalue('val3', Decimal("0.1")) doc.add_numericvalue('val4', Decimal("0.1") + Decimal("0.2")) doc.add_numericvalue('val5', 1234, desc="a desc") doc.add_numericvalue('val6', long_type(1234)) assert doc.to_xml() == \ '<serviceupdate xmlns="http://sls.cern.ch/SLS/XML/update">' \ '<id>myid</id>' \ '<status>available</status>' \ '<timestamp>2015-01-01T00:00:00</timestamp>' \ '<data>' \ '<numericvalue name="val1">1234</numericvalue>' \ '<numericvalue name="val2">12.34</numericvalue>' \ '<numericvalue name="val3">0.1</numericvalue>' \ '<numericvalue name="val4">0.3</numericvalue>' \ '<numericvalue desc="a desc" name="val5">1234</numericvalue>' \ '<numericvalue name="val6">1234</numericvalue>' \ '</data>' \ '</serviceupdate>' assert validate_xsd(doc.to_xml())
def test_creation_simple(): """Test creation of a service document.""" doc = ServiceDocument('myserviceid') assert doc.service_id == 'myserviceid' assert isinstance(doc.timestamp, datetime) assert doc.status == Status.available assert validate_xsd(doc.to_xml()) assert doc.to_xml() == \ '<serviceupdate xmlns="http://sls.cern.ch/SLS/XML/update">' \ '<id>myserviceid</id>' \ '<status>available</status>' \ '<timestamp>{0}</timestamp>' \ '</serviceupdate>'.format(doc.timestamp.isoformat()) dt = datetime(2015, 1, 1, 0, 0, 0) doc = ServiceDocument('anotherid', timestamp=dt, status=Status.degraded) assert doc.to_xml() == \ '<serviceupdate xmlns="http://sls.cern.ch/SLS/XML/update">' \ '<id>anotherid</id>' \ '<status>degraded</status>' \ '<timestamp>2015-01-01T00:00:00</timestamp>' \ '</serviceupdate>' assert validate_xsd(doc.to_xml())
def test_creation_simple(): """Test creation of a service document.""" doc = ServiceDocument('myserviceid') assert doc.service_id == 'myserviceid' assert isinstance(doc.timestamp, datetime) assert doc.availability == 100 print(doc.to_xml()) assert doc.to_xml() == \ '<serviceupdate xmlns="http://sls.cern.ch/SLS/XML/update">' \ '<id>myserviceid</id>' \ '<availability>100</availability>' \ '<timestamp>{0}</timestamp>' \ '</serviceupdate>'.format(doc.timestamp.isoformat()) dt = datetime(2015, 1, 1, 0, 0, 0) doc = ServiceDocument('anotherid', timestamp=dt, availability=99) assert doc.to_xml() == \ '<serviceupdate xmlns="http://sls.cern.ch/SLS/XML/update">' \ '<id>anotherid</id>' \ '<availability>99</availability>' \ '<timestamp>2015-01-01T00:00:00</timestamp>' \ '</serviceupdate>'
def test_creation_attrs(): """Test non-mandatory attributes.""" dt = datetime(2015, 1, 1, 0, 0, 0) doc = ServiceDocument( 'myid', timestamp=dt, availabilitydesc='My description', contact='*****@*****.**', webpage='http://example.org', availabilityinfo='Extra info', ) assert doc.to_xml() == \ '<serviceupdate xmlns="http://sls.cern.ch/SLS/XML/update">' \ '<id>myid</id>' \ '<status>available</status>' \ '<timestamp>2015-01-01T00:00:00</timestamp>' \ '<availabilitydesc>My description</availabilitydesc>' \ '<contact>[email protected]</contact>' \ '<webpage>http://example.org</webpage>' \ '<availabilityinfo>Extra info</availabilityinfo>' \ '</serviceupdate>' assert validate_xsd(doc.to_xml())
def test_availablity_to_status(): """Test creation of a service document.""" dt = datetime(2015, 1, 1, 0, 0, 0) doc = ServiceDocument('anotherid', timestamp=dt, availability=99) assert doc.status == Status.available assert doc.availability == 99 assert validate_xsd(doc.to_xml()) doc = ServiceDocument('anotherid', timestamp=dt, availability=60) assert doc.status == Status.degraded assert doc.availability == 60 assert validate_xsd(doc.to_xml()) doc = ServiceDocument('anotherid', timestamp=dt, availability=20) assert doc.status == Status.unavailable assert doc.availability == 20 assert validate_xsd(doc.to_xml()) with pytest.raises(AssertionError): doc = ServiceDocument('anid', timestamp=dt, status=Status.unavailable, availability=20) doc = ServiceDocument('anotherid', timestamp=dt, status='available') assert doc.status == Status.available assert doc.availability == 100 assert validate_xsd(doc.to_xml()) doc = ServiceDocument('anotherid', timestamp=dt, status='degraded') assert doc.status == Status.degraded assert doc.availability == 50 assert validate_xsd(doc.to_xml()) doc = ServiceDocument('anotherid', timestamp=dt, status='unavailable') assert doc.status == Status.unavailable assert doc.availability == 0 assert validate_xsd(doc.to_xml())