mirror of
https://github.com/ParisNeo/lollms.git
synced 2024-12-18 20:27:58 +00:00
Added c++ version
This commit is contained in:
parent
09f70f785e
commit
d54140ee71
15
tests/endoints_unit_tests/cpp/makefile
Normal file
15
tests/endoints_unit_tests/cpp/makefile
Normal file
@ -0,0 +1,15 @@
|
||||
CXX = g++
|
||||
CXXFLAGS = -std=c++11 -Wall
|
||||
LIBS = -L/path/to/sio_client_library -lsio_client
|
||||
|
||||
# Adjust the path above to the directory where you have the sio_client library
|
||||
|
||||
SRC = main.cpp
|
||||
|
||||
all: executable
|
||||
|
||||
executable: $(SRC)
|
||||
$(CXX) $(CXXFLAGS) $(LIBS) $(SRC) -o executable
|
||||
|
||||
clean:
|
||||
del executable
|
93
tests/endoints_unit_tests/cpp/test_generation.cpp
Normal file
93
tests/endoints_unit_tests/cpp/test_generation.cpp
Normal file
@ -0,0 +1,93 @@
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <thread>
|
||||
#include <chrono>
|
||||
|
||||
#include <cxxopts.hpp>
|
||||
#include <sio_client.h>
|
||||
|
||||
// Connect to the Socket.IO server
|
||||
sio::client socket_client;
|
||||
|
||||
// Event handler for receiving generated text
|
||||
void text_generated(const sio::event& event) {
|
||||
std::cout << "Generated text: " << event.get_message()->get_string() << std::endl;
|
||||
}
|
||||
|
||||
void test_generate_text(const std::string& host, int port, const std::string& text_file) {
|
||||
// Read the text file and split by multiple newlines
|
||||
std::cout << "Loading file" << std::endl;
|
||||
std::ifstream file(text_file);
|
||||
std::string prompt;
|
||||
std::vector<std::string> prompts;
|
||||
while (std::getline(file, prompt, '\n')) {
|
||||
if (!prompt.empty())
|
||||
prompts.push_back(prompt);
|
||||
}
|
||||
|
||||
bool is_ready = false;
|
||||
|
||||
// Event handler for successful connection
|
||||
socket_client.set_open_listener([&]() {
|
||||
std::cout << "Connected to Socket.IO server" << std::endl;
|
||||
for (const auto& prompt : prompts) {
|
||||
if (!prompt.empty()) {
|
||||
// Trigger the 'generate_text' event with the prompt
|
||||
is_ready = false;
|
||||
std::cout << "Sending prompt: " << prompt << std::endl;
|
||||
socket_client.socket()->emit("generate_text", sio::object_message::create_object({
|
||||
{ "prompt", prompt },
|
||||
{ "personality", -1 },
|
||||
{ "n_predicts", 1024 }
|
||||
}));
|
||||
while (!is_ready)
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
socket_client.socket()->on("text_chunk", [&](sio::event& event) {
|
||||
std::cout << event.get_message()->get_map()["chunk"]->get_string();
|
||||
});
|
||||
|
||||
socket_client.socket()->on("text_generated", [&](sio::event& event) {
|
||||
std::cout << "text_generated_ok" << std::endl;
|
||||
std::cout << event.get_message()->get_map()["text"]->get_string() << std::endl;
|
||||
is_ready = true;
|
||||
});
|
||||
|
||||
std::cout << "Connecting to http://" << host << ":" << port << std::endl;
|
||||
// Connect to the Socket.IO server
|
||||
socket_client.connect(host + ":" + std::to_string(port));
|
||||
|
||||
// Start the event loop
|
||||
socket_client.socket()->io_service()->poll();
|
||||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
cxxopts::Options options("Socket.IO endpoint test", "Usage: ./executable [options]");
|
||||
options.add_options()
|
||||
("h,host", "Socket.IO server host", cxxopts::value<std::string>()->default_value("localhost"))
|
||||
("p,port", "Socket.IO server port", cxxopts::value<int>()->default_value("9600"))
|
||||
("t,text-file", "Path to the text file", cxxopts::value<std::string>());
|
||||
|
||||
auto parsed_args = options.parse(argc, argv);
|
||||
|
||||
std::string host = parsed_args["host"].as<std::string>();
|
||||
int port = parsed_args["port"].as<int>();
|
||||
std::string text_file = parsed_args["text-file"].as<std::string>();
|
||||
|
||||
// Verify if the text file exists
|
||||
std::ifstream file_stream(text_file);
|
||||
if (!file_stream) {
|
||||
std::cerr << "Error: The provided text file '" << text_file << "' does not exist." << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Run the test with provided arguments
|
||||
test_generate_text(host, port, text_file);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user