Skip to content

Commit

Permalink
added basic python example
Browse files Browse the repository at this point in the history
  • Loading branch information
ibrodkin committed Jun 6, 2024
1 parent 5f35e90 commit 1b7cf5a
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 104 deletions.
86 changes: 0 additions & 86 deletions Client/include/ClientConfiguration.h
Original file line number Diff line number Diff line change
@@ -1,96 +1,10 @@
#ifndef CHRONOLOG_CLIENT_CONFIGURATION_H
#define CHRONOLOG_CLIENT_CONFIGURATION_H

#include <spdlog/common.h>

namespace chronolog
{

typedef struct RPCProviderConf_
{
std::string PROTO_CONF;
std::string IP;
uint16_t BASE_PORT;
uint16_t SERVICE_PROVIDER_ID;

[[nodiscard]] std::string to_String() const
{
return "[PROTO_CONF: " + PROTO_CONF + ", IP: " + IP + ", BASE_PORT: " + std::to_string(BASE_PORT) +
", SERVICE_PROVIDER_ID: " + std::to_string(SERVICE_PROVIDER_ID) + "]";
}
} RPCProviderConf;


typedef struct LogConf_
{
std::string LOGTYPE;
std::string LOGFILE;
spdlog::level::level_enum LOGLEVEL;
std::string LOGNAME;
size_t LOGFILESIZE;
size_t LOGFILENUM;
spdlog::level::level_enum FLUSHLEVEL;

// Helper function to convert spdlog::level::level_enum to string
static std::string LevelToString(spdlog::level::level_enum level)
{
switch(level)
{
case spdlog::level::trace:
return "TRACE";
case spdlog::level::debug:
return "DEBUG";
case spdlog::level::info:
return "INFO";
case spdlog::level::warn:
return "WARN";
case spdlog::level::err:
return "ERROR";
case spdlog::level::critical:
return "CRITICAL";
case spdlog::level::off:
return "OFF";
default:
return "UNKNOWN";
}
}

[[nodiscard]] std::string to_string() const
{
return "[TYPE: " + LOGTYPE + ", FILE: " + LOGFILE + ", LEVEL: " + LevelToString(LOGLEVEL) + ", NAME: " +
LOGNAME + ", LOGFILESIZE: " + std::to_string(LOGFILESIZE) + ", LOGFILENUM: " +
std::to_string(LOGFILENUM) + ", FLUSH LEVEL: " + LevelToString(FLUSHLEVEL) + "]";
}
} LogConf;

struct ClientConf
{
RPCProviderConf VISOR_CLIENT_PORTAL_SERVICE_CONF;
LogConf CLIENT_LOG_CONF;

ClientConf()
{
VISOR_CLIENT_PORTAL_SERVICE_CONF.PROTO_CONF = "ofi+sockets";
VISOR_CLIENT_PORTAL_SERVICE_CONF.IP = "127.0.0.1";
VISOR_CLIENT_PORTAL_SERVICE_CONF.BASE_PORT = 5555;
VISOR_CLIENT_PORTAL_SERVICE_CONF.SERVICE_PROVIDER_ID = 55;

CLIENT_LOG_CONF.LOGTYPE = "file";
CLIENT_LOG_CONF.LOGFILE = "chrono_client.log";
CLIENT_LOG_CONF.LOGLEVEL = spdlog::level::info;
CLIENT_LOG_CONF.LOGFILESIZE = 104857600;
CLIENT_LOG_CONF.LOGFILENUM = 3;
CLIENT_LOG_CONF.FLUSHLEVEL = spdlog::level::warn;

};

[[nodiscard]] std::string to_string() const
{
return "[VISOR_CLIENT_PORTAL_SERVICE_CONF: " + VISOR_CLIENT_PORTAL_SERVICE_CONF.to_String() +
", CLIENT_LOG_CONF:" + CLIENT_LOG_CONF.to_string() + "]";
}
};

struct ClientPortalServiceConf
{
ClientPortalServiceConf( const std::string & protocol, const std::string & service_ip, uint16_t service_port, uint16_t service_provider_id)
Expand Down
60 changes: 42 additions & 18 deletions python_client/test.py
Original file line number Diff line number Diff line change
@@ -1,32 +1,56 @@

//make install
# make install

// currently CMAKE_INSTALL_LIBDIR=/home/ENV{USERNAME}/chronolog/lib
# currently CMAKE_INSTALL_LIBDIR=/home/ENV{USERNAME}/chronolog/lib

// create symlink for py_chronolog_client.[linux_distibution_version].so
// ln -s ${CMAKE_INSTALL_LIBDIR}/py_chronolog_client.so ${CMAKE_INSTALL_LIBDIR}/py_chronolog_client.[linux_distribution_version].so
## create symlink for py_chronolog_client.[linux_distibution_version].so
## ln -s ${CMAKE_INSTALL_LIBDIR}/py_chronolog_client.so ${CMAKE_INSTALL_LIBDIR}/py_chronolog_client.[linux_distribution_version].so

//update LD_LIBRARY_PATH
// export LD_LIBRARY_PATH=${CMAKE_INSTALL_LIBDIR}:${LD_LIBRARY_PATH}
//update PYTHONPATH
// export PYTHONPATH=${CMAKE_INSTALL_LIBDIR}:${PYTHONPATH}
## update LD_LIBRARY_PATH
## export LD_LIBRARY_PATH=${CMAKE_INSTALL_LIBDIR}:${LD_LIBRARY_PATH}
## update PYTHONPATH
## export PYTHONPATH=${CMAKE_INSTALL_LIBDIR}:${PYTHONPATH}


//using spack installed python3 version
## using spack installed python3 version

>>> import py_chronolog_client
#############################

>>> attrs=dict();
>>> clientConf = py_chronolog_client.ClientPortalServiceConf("ofi+sockets","127.0.0.1",5555,55);
import py_chronolog_client

>>> client = py_chronolog_client.Client(clientConf);
>>>attrs=dict();

>>>clientConf = py_chronolog_client.ClientPortalServiceConf("ofi+sockets","127.0.0.1",5555,55);

>>>client = py_chronolog_client.Client(clientConf);

>>>return_pair = client.AcquireStory("py_chronicle", "my_story", attrs, 1);
>>>print(return_pair)
(-15, None)
>>>

>>> client.Connect()
0
>>> client.CreateChronicle("py_chronicle", attrs, 1);
-15
>>> client.DestroyChronicle("py_chronicle");
-15
0
>>> return_pair = client.AcquireStory("py_chronicle", "my_story", attrs, 1);
>>> print(return_pair)
(-15, None)
>>>
(0, <py_chronolog_client.StoryHandle object at 0xffffa135e5b0>)
>>> print(return_pair[1])
<py_chronolog_client.StoryHandle object at 0xffffa135e5b0>

>>> return_pair[1].log_event("py_event")
1
>>> return_pair[1].log_event("py_event.2")
1
>>> return_pair[1].log_event("py_event.3")
1
>>> return_pair[1].log_event("py_event.4")
1
>>> client.ReleaseStory("py_chronicle","py_story");
-3
>>> client.ReleaseStory("py_chronicle","my_story");
0
>>> client.Disconnect()
0

0 comments on commit 1b7cf5a

Please sign in to comment.