Exemplo n.º 1
0
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")
Exemplo n.º 2
0
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
        )
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
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")
Exemplo n.º 6
0
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