def _checkCompanySymbols(xigniteApiToken): """ Check if company security symbols are valid. Email notifications are sent for invalid symbols. Each time an invalid symbol is reported successfully, we add it to a table keeping track of invalid symbols that were already reported -- to avoid duplicate emails about the same symbol. :param xigniteApiToken: Xignite API Token :type xigniteApiToken: string """ _selfCheck(xigniteApiToken) allSymbols = [sec[0] for sec in metric_utils.getAllMetricSecurities()] unknownSymbols = _validateSymbols(allSymbols, xigniteApiToken) if unknownSymbols: # Report unknown symbol g_log.error("Unknown=%s", unknownSymbols) for symbol in unknownSymbols: if not _unknownSymbolReported(symbol): subject = "%s: Company symbol=%s is unknown" % (__name__, symbol,) body = "%s: Company symbol=%s is unknown." % (__name__, symbol,) error_reporting.sendErrorEmail(subject=subject, body=body) # Flag it, so it won't be reported again _flagUnknownSymbolAsReported(symbol) else: # Remove all rows of company_symbol_failures table _clearUnknownSymbols() g_log.info("All company security symbols passed validation")
def _selfCheck(xigniteApiToken): """ Perform a self-check on _validateSymbols() to validate that the hack in _validateSymbols works. Report error if the self-check fails. """ # NOTE: "WAG" used to be the symbol of "Walgreen Co" expectedUnknownSymbols = ["WAG", "ZZZZZZ"] expectedKnownSymbols = ["AAPL", "F"] allSymbols = expectedUnknownSymbols + expectedKnownSymbols failedSelfCheckFlag = ".SELFCHECK" try: unknownSymbols = _validateSymbols(allSymbols, xigniteApiToken) if set(unknownSymbols) != set(expectedUnknownSymbols): raise _SelfCheckError( "Unknown symbol self-check failed: " "expectedUnknown=%s, reportedUnknown=%s" % (expectedUnknownSymbols, unknownSymbols)) unknownSymbols = _validateSymbols(expectedKnownSymbols, xigniteApiToken) if unknownSymbols: raise _SelfCheckError( "Known symbol self-check failed: expectedKnown=%s, reportedUnknown=%s" % (expectedKnownSymbols, unknownSymbols)) except _SelfCheckError as e: if not _unknownSymbolReported(failedSelfCheckFlag): subject = "%s: self-check failed" % (__name__) body = "%s: self-check failed: %r" % (__name__, e,) error_reporting.sendErrorEmail(subject=subject, body=body) # Flag it, so it won't be reported again _flagUnknownSymbolAsReported(failedSelfCheckFlag) raise
def testSendErrorEmailIsPossible(self): """Send email to [email protected] via error-reporting email mechanism""" params = error_reporting._getErrorReportingParamsFromEnv() params["recipients"][:] = ["*****@*****.**"] error_reporting.sendErrorEmail( subject="testSendErrorEmailIsPossible", body="Testing testSendErrorEmailIsPossible", params=params )
def testSendErrorEmailIsPossible(self): # pylint: disable=R0201 """Send email to [email protected] via error-reporting email mechanism""" params = error_reporting._getErrorReportingParamsFromEnv() params["recipients"][:] = ["*****@*****.**"] error_reporting.sendErrorEmail( subject="testSendErrorEmailIsPossible", body="Testing testSendErrorEmailIsPossible", params=params)
def _checkCompanySymbols(xigniteApiToken): """ Check if company security symbols are valid. Email notifications are sent for invalid symbols. Each time an invalid symbol is reported successfully, we add it to a table keeping track of invalid symbols that were already reported -- to avoid duplicate emails about the same symbol. :param xigniteApiToken: Xignite API Token :type xigniteApiToken: string """ _selfCheck(xigniteApiToken) allSymbols = [sec[0] for sec in metric_utils.getAllMetricSecurities()] unknownSymbols = _validateSymbols(allSymbols, xigniteApiToken) if unknownSymbols: # Report unknown symbol g_log.error("Unknown=%s", unknownSymbols) for symbol in unknownSymbols: if not _unknownSymbolReported(symbol): subject = "%s: Company symbol=%s is unknown" % ( __name__, symbol, ) body = "%s: Company symbol=%s is unknown." % ( __name__, symbol, ) error_reporting.sendErrorEmail(subject=subject, body=body) # Flag it, so it won't be reported again _flagUnknownSymbolAsReported(symbol) else: # Remove all rows of company_symbol_failures table _clearUnknownSymbols() g_log.info("All company security symbols passed validation")
def _selfCheck(xigniteApiToken): """ Perform a self-check on _validateSymbols() to validate that the hack in _validateSymbols works. Report error if the self-check fails. """ # NOTE: "WAG" used to be the symbol of "Walgreen Co" expectedUnknownSymbols = ["WAG", "ZZZZZZ"] expectedKnownSymbols = ["AAPL", "F"] failedSelfCheckFlag = ".SELFCHECK" try: unknownSymbols = _validateSymbols(expectedUnknownSymbols, xigniteApiToken, negativeTest=True) if set(unknownSymbols) != set(expectedUnknownSymbols): raise _SelfCheckError("Unknown symbol self-check failed: " "expectedUnknown=%s, reportedUnknown=%s" % (expectedUnknownSymbols, unknownSymbols)) unknownSymbols = _validateSymbols(expectedKnownSymbols, xigniteApiToken) if unknownSymbols: raise _SelfCheckError( "Known symbol self-check failed: expectedKnown=%s, reportedUnknown=%s" % (expectedKnownSymbols, unknownSymbols)) except _SelfCheckError as e: if not _unknownSymbolReported(failedSelfCheckFlag): subject = "%s: self-check failed" % (__name__) body = "%s: self-check failed: %r" % ( __name__, e, ) error_reporting.sendErrorEmail(subject=subject, body=body) # Flag it, so it won't be reported again _flagUnknownSymbolAsReported(failedSelfCheckFlag) raise