Esempio n. 1
0
int main(int argc, char* argv[])
{
  std::string compiler;
  std::string compilerPath;
  Vstring     linklineA;

  extract_linker(compiler, compilerPath, linklineA);

  Json json;
  json.add("compiler",     compiler);
  json.add("compilerPath", compilerPath);
  json.add("link_line",    linklineA);
  json.fini();

  std::string jsonStr = json.result();
  fprintf(stdout,"%s\n",jsonStr.c_str());

  return 0;
}
Esempio n. 2
0
/** If the configuration of this installation has not been reported for the
 *  current version, collect the hardware statistics and send it to STK's
 *  server.
 */
void reportHardwareStats()
{
    // Version of the hw report, which is stored in the DB. If new fields
    // are added, increase this version. Each STK installation will report
    // its configuration only once (per version number). So if the version
    // number is increased, a new report will be sent.
    const int report_version = 1;
    if(UserConfigParams::m_last_hw_report_version>=report_version) return;
    while(UserConfigParams::m_random_identifier==0)
    {
        RandomGenerator rg;
        UserConfigParams::m_random_identifier = rg.get(1<<30);
        user_config->saveConfig();
    }

    Json json;
#ifdef WIN32
    json.add("os_win", 1);
#else
    json.add("os_win", 0);
#endif
#ifdef __APPLE__
    json.add("os_macosx", 1);
#else
    json.add("os_macosx", 0);
#endif
#ifdef __linux__
    json.add("os_linux", 1);
    json.add("os_unix", 1);
#else
    json.add("os_linux", 0);
    json.add("os_unix", 0);
#endif
#ifdef DEBUG
    json.add("build_debug", 1);
#endif

    json.add("os_version", getOSVersion());

    unsigned int ogl_version = irr_driver->getGLSLVersion();
    unsigned int major = ogl_version/100;
    unsigned int minor = ogl_version - 100*major;
    std::string version =
        StringUtils::insertValues("%d.%d", major, minor);
    json.add("GL_SHADING_LANGUAGE_VERSION", version);

    std::string vendor, renderer, full_version;
    irr_driver->getOpenGLData(&vendor, &renderer, &full_version);
    json.add("GL_VENDOR",   vendor          );
    json.add("GL_RENDERER", renderer        );
    json.add("GL_VERSION",  full_version    );
    json.add("gfx_drv_ver", "OpenGL "+vendor);

    std::string card_name = vendor;
    if(StringUtils::startsWith(card_name, "ATI Technologies Inc."))
        card_name="ATI";
    else if (StringUtils::startsWith(card_name, "NVIDIA Corporation"))
        card_name="NVIDIA";
    else if(StringUtils::startsWith(card_name, "S3 Graphics"))
        card_name="S3";
    json.add("gfx_card", card_name+" "+renderer);

    json.add("video_xres", UserConfigParams::m_width );
    json.add("video_yres", UserConfigParams::m_height);

    int mem = getRAM();
    if(mem>0)
        json.add("ram_total", mem);

    int nr_procs = getNumProcessors();
    if(nr_procs>0)
        json.add("cpu_numprocs", nr_procs);

    json.add("GL_EXTENSIONS", getGLExtensions());
    getGLLimits(&json);
    json.finish();

    // ------------------------------------------------------------------------
    /** A small class which sends the HW report to the STK server. On
     *  completion, it will either update the last-submitted-hw-report version,
     *  or log an error message (in which case next time STK is started it
     *  wil try again to log the report).
     */
    class HWReportRequest : public Online::HTTPRequest
    {
    private:
        /** Version number of the hw report. */
        int m_version;
    public:
        HWReportRequest(int version) : Online::HTTPRequest(/*manage memory*/true, 1)
                                     , m_version(version)
        {}
        // --------------------------------------------------------------------
        /** Callback after the request has been executed.
         */
        virtual void callback()
        {
            // If the request contains incorrect data, it will not have a
            // download error, but return an error string as return value:
            if(hadDownloadError() || getData()=="<h1>Bad Request (400)</h1>")
            {
                Log::error("HW report", "Error uploading the HW report.");
                if(hadDownloadError())
                    Log::error("HW report", "%s", getDownloadErrorMessage());
                else
                    Log::error("HW report", "%s", getData().c_str());
            }
            else
            {
                Log::info("HW report", "Upload successful.");
                UserConfigParams::m_last_hw_report_version = m_version;
                // The callback is executed by the main thread, so no need
                // to worry about locks when writing the file.
                user_config->saveConfig();
            }
        }   // callback

    };   // HWReportRequest
    // ------------------------------------------------------------------------

    Online::HTTPRequest *request = new HWReportRequest(report_version);
    request->addParameter("user_id", UserConfigParams::m_random_identifier);
    request->addParameter("time", StkTime::getTimeSinceEpoch());
    request->addParameter("type", "hwdetect");
    request->addParameter("version", report_version);
    request->addParameter("data", json.toString());
    request->setURL((std::string)UserConfigParams::m_server_hw_report+"/upload/v1/");
    //request->setURL("http://127.0.0.1:8000/upload/v1/");
    request->queue();

}   // reportHardwareStats
Esempio n. 3
0
int main(int argc, char* argv[])
{
  const char* executable_tracking = getenv("XALT_EXECUTABLE_TRACKING");
  if (executable_tracking == NULL || (strcmp(executable_tracking,"yes") != 0))
    {
      std::cout << "*------------------------------------------------------------------------------*\n";
      std::cout << "   Warning: XALT_EXECUTABLE_TRACKING is not set to \"yes\"!!\n";
      std::cout << "\n";
      std::cout << "            XALT will not do anything without this variable\n";
      std::cout << "            set to \"yes\"\n";
      std::cout << "*------------------------------------------------------------------------------*\n";
      return 1;
    }
    
  std::string syshost(xalt_syshost());
  std::string syslog_tag("XALT_LOGGING_");
  syslog_tag.append(syshost);


  Vstring     resultA;
  std::string cmd     = XALT_DIR "/bin/xalt_print_os";
  capture(cmd, resultA);
  std::string current_os_descript = resultA[0];

  char    dateStr[dateSZ];
  time_t  now = (time_t) epoch();
  strftime(dateStr,dateSZ, "%c", localtime(&now));
  
  const char* transmission = getenv("XALT_TRANSMISSION_STYLE");
  if (transmission == NULL)
    transmission = TRANSMISSION;
  if ((strcasecmp(transmission,"file")      != 0 ) &&
      (strcasecmp(transmission,"none")      != 0 ) && 
      (strcasecmp(transmission,"syslog")    != 0 ) && 
      (strcasecmp(transmission,"syslogv1")  != 0 ) && 
      (strcasecmp(transmission,"direct2db") != 0 ))
    transmission = "file";

  const char* computeSHA1 = getenv("XALT_COMPUTE_SHA1");
  if (computeSHA1 == NULL)
    computeSHA1 = XALT_COMPUTE_SHA1;

  const char* xalt_etc_dir = getenv("XALT_ETC_DIR");
  if (xalt_etc_dir == NULL)
    xalt_etc_dir = XALT_ETC_DIR;

  const char* xalt_mpi_tracking = getenv("XALT_MPI_TRACKING");
  if (xalt_mpi_tracking == NULL)
    xalt_mpi_tracking = XALT_MPI_TRACKING;

  const char* xalt_gpu_tracking = getenv("XALT_GPU_TRACKING");
  if (xalt_gpu_tracking == NULL)
    xalt_gpu_tracking = XALT_GPU_TRACKING;
  if (strcmp(HAVE_DCGM,"no") == 0)
    xalt_gpu_tracking = HAVE_DCGM;
          
  const char* xalt_func_tracking = getenv("XALT_FUNCTION_TRACKING");
  if (xalt_func_tracking == NULL)
    xalt_func_tracking = XALT_FUNCTION_TRACKING;
  else if (strcmp(xalt_func_tracking,"no") != 0)
    xalt_func_tracking = "yes";
    
  const char* xalt_scalar_tracking = getenv("XALT_SCALAR_TRACKING");
  if (xalt_scalar_tracking == NULL)
    xalt_scalar_tracking = XALT_SCALAR_TRACKING;

  const char* xalt_scalar_sampling = getenv("XALT_SCALAR_SAMPLING");
  if (!xalt_scalar_sampling)
     xalt_scalar_sampling = getenv("XALT_SCALAR_AND_SPSR_SAMPLING");
  if (xalt_scalar_sampling == NULL || strcmp(xalt_scalar_sampling,"yes") != 0)
    xalt_scalar_sampling = "no";

  const char* xalt_preload_only   = XALT_PRELOAD_ONLY;

  std::string cxx_ld_library_path = CXX_LD_LIBRARY_PATH;
  if (cxx_ld_library_path == "")
    cxx_ld_library_path = "<empty>";

  if (argc == 2 && strcmp(argv[1],"--json") == 0) 
    {
      Json json;
      json.add("DATE",                          dateStr);
      json.add("XALT_EXECUTABLE_TRACKING",      executable_tracking);
      json.add("XALT_PRELOAD_ONLY",             xalt_preload_only);
      json.add("XALT_SYSHOST",                  syshost);
      json.add("XALT_VERSION",                  XALT_VERSION);
      json.add("XALT_INTERFACE_VERSION",        XALT_INTERFACE_VERSION);
      json.add("XALT_GIT_VERSION",              XALT_GIT_VERSION);
      json.add("XALT_VERSION_STR",              XALT_VERSION_STR);
      json.add("XALT_FILE_PREFIX",              XALT_FILE_PREFIX);
      json.add("XALT_TRANSMISSION_STYLE",       transmission);
      json.add("XALT_FUNCTION_TRACKING",        xalt_func_tracking);
      if (strcmp(transmission,"syslog") == 0)
        json.add("XALT_LOGGING_TAG",            syslog_tag);
      json.add("XALT_COMPUTE_SHA1",             computeSHA1);
      json.add("XALT_ETC_DIR",                  xalt_etc_dir);
      json.add("XALT_DIR",                      XALT_DIR);
      json.add("BAD_INSTALL",                   BAD_INSTALL);
      json.add("XALT_CONFIG_PY",                XALT_CONFIG_PY);
      json.add("XALT_SYSTEM_PATH",              XALT_SYSTEM_PATH);
      json.add("XALT_SYSHOST_CONFIG",           SYSHOST_CONFIG);
      json.add("XALT_MPI_TRACKING",             xalt_mpi_tracking);
      json.add("XALT_GPU_TRACKING",             xalt_gpu_tracking);
      json.add("XALT_SCALAR_TRACKING",          xalt_scalar_tracking);
      json.add("XALT_SCALAR_SAMPLING",          xalt_scalar_sampling);
      json.add("XALT_SYSLOG_MSG_SZ",            SYSLOG_MSG_SZ);
      json.add("XALT_INSTALL_OS",               XALT_INSTALL_OS);
      json.add("XALT_CURRENT_OS",               current_os_descript);
      json.add("CXX_LD_LIBRARY_PATH",           cxx_ld_library_path);
      json.add("HAVE_32BIT",                    HAVE_32BIT);
      json.add("MY_HOSTNAME_PARSER",            MY_HOSTNAME_PARSER);
      json.add("HAVE_DCGM",                     HAVE_DCGM);

      json.add("hostnameA",    hostnameSz,      hostnameA);
      json.add("pathPatternA", pathPatternSz,   pathPatternA);
      json.add("envPatternA",  envPatternSz,    envPatternA);
      json.fini();

      std::string jsonStr = json.result();
      std::cout << jsonStr << std::endl;
      return 0;
    }

  std::cout << "*------------------------------------------------------------------------------*\n";
  std::cout << "                      XALT Configuration Report\n";
  std::cout << "*------------------------------------------------------------------------------*\n\n";
  std::cout << "Today's DATE:                  " << dateStr                        << "\n";
  std::cout << "XALT_VERSION:                  " << XALT_VERSION                   << "\n";
  std::cout << "XALT_GIT_VERSION:              " << XALT_GIT_VERSION               << "\n";
  std::cout << "XALT_VERSION_STR:              " << XALT_VERSION_STR               << "\n";
  std::cout << "*------------------------------------------------------------------------------*\n";
  std::cout << "XALT_EXECUTABLE_TRACKING:      " << executable_tracking            << "\n";
  std::cout << "XALT_FUNCTION_TRACKING:        " << xalt_func_tracking             << "\n";
  std::cout << "XALT_SYSHOST:                  " << syshost                        << "\n";
  std::cout << "XALT_FILE_PREFIX:              " << XALT_FILE_PREFIX               << "\n";
  std::cout << "XALT_INTERFACE_VERSION:        " << XALT_INTERFACE_VERSION         << "\n";
  std::cout << "XALT_TRANSMISSION_STYLE:       " << transmission                   << "\n";
  if (strcmp(transmission,"syslog") == 0)
    std::cout << "XALT_LOGGING_TAG:              " << syslog_tag                   << "\n";
  std::cout << "XALT_COMPUTE_SHA1:             " << computeSHA1                    << "\n";
  std::cout << "XALT_ETC_DIR:                  " << xalt_etc_dir                   << "\n";
  std::cout << "XALT_DIR:                      " << XALT_DIR                       << "\n";
  std::cout << "BAD_INSTALL:                   " << BAD_INSTALL                    << "\n";
  std::cout << "XALT_CONFIG_PY:                " << XALT_CONFIG_PY                 << "\n";
  std::cout << "XALT_MPI_TRACKING:             " << xalt_mpi_tracking              << "\n";
  std::cout << "XALT_GPU_TRACKING:             " << xalt_gpu_tracking              << "\n";
  std::cout << "XALT_SCALAR_TRACKING:          " << xalt_scalar_tracking           << "\n";
  std::cout << "XALT_SCALAR_SAMPLING:          " << xalt_scalar_sampling           << "\n";
  std::cout << "XALT_SYSTEM_PATH:              " << XALT_SYSTEM_PATH               << "\n";
  std::cout << "XALT_SYSHOST_CONFIG:           " << SYSHOST_CONFIG                 << "\n";
  std::cout << "XALT_SYSLOG_MSG_SZ:            " << SYSLOG_MSG_SZ                  << "\n";
  std::cout << "CXX_LD_LIBRARY_PATH:           " << cxx_ld_library_path            << "\n";
  std::cout << "XALT_INSTALL_OS:               " << XALT_INSTALL_OS                << "\n";
  std::cout << "CURRENT_OS:                    " << current_os_descript            << "\n";
  std::cout << "XALT_PRELOAD_ONLY:             " << XALT_PRELOAD_ONLY              << "\n";
  std::cout << "HAVE_32BIT:                    " << HAVE_32BIT                     << "\n";
  std::cout << "MY_HOSTNAME_PARSER:            " << MY_HOSTNAME_PARSER             << "\n";
  std::cout << "Built with DCGM:               " << HAVE_DCGM                      << "\n";
  std::cout << "*------------------------------------------------------------------------------*\n\n";

  displayArray("hostnameA",    hostnameSz,    hostnameA);
  std::cout << "\nRemember that \"PKGS\" means a program that can also track internal packages\n";
  displayArray("pathPatternA", pathPatternSz, pathPatternA);
  displayArray("envPatternA",  envPatternSz,  envPatternA);

  std::cout << "*----------------------*\n";
  std::cout << " Array: interval\n";
  std::cout << "*----------------------*\n";
  for (int i = 0; i < rangeSz-1; ++i)
    std::cout << "Time Range(seconds): [" << rangeA[i].left << ", " << rangeA[i+1].left
              << "]: probability: "<< rangeA[i].prob << "\n";
  std::cout << "\n";
    
  return 0;
}