首页 > 其他分享 >Drogon框架的测试记录

Drogon框架的测试记录

时间:2024-08-19 14:27:38浏览次数:14  
标签:框架 windows 绑定 x64 drogon vcpkg 测试 ctl Drogon

主要为了探究以下几个问题

目录

1.drogon的安装配置

3.drogon的使用

1.Drogon的安装配置

经历了多次失败,目前发现的比较可行的安装方法如下(官方的vcpkg安装),失败的方法:drogon的直接zip下载、conan下载:

1.下载cmake,在电脑上安装cmake,然后添加到设置-系统环境变量-系统变量的path中

2.安装vcpkg,网络不好就直接去github上下载zip,然后解压并切换到路径去执行第三条指令

git clone https://github.com/microsoft/vcpkg
cd vcpkg
./bootstrap-vcpkg.bat

3.在vcpkg中安装drogon(注意,使用64位的cmd)

vcpkg install drogon:x64-windows

有可能报错powershell,解决方案是去github下载powershell7(x64),然后用这个x64的powershell去执行第三步

4.检查C:\Users\xxx\vcpkg-master\installed\x64-windows\tools,如果没有drogon(我就是),那么要

vcpkg install drogon[ctl]:x64-windows

5.设置-系统环境变量-系统变量的path中添加如下路径

C:\Dev\vcpkg\installed\x64-windows\tools\drogon
C:\Dev\vcpkg\installed\x64-windows\bin
C:\Dev\vcpkg\installed\x64-windows\lib
C:\Dev\vcpkg\installed\x64-windows\include

6.重启powershell,输入drogon_ctl。出现下面这样就说明安装好了

usage: drogon_ctl [-v | --version] [-h | --help] <command> [<args>]
commands list:
create                  create some source files(Use 'drogon_ctl help create' for more information)
help                    display this message
press                   Do stress testing(Use 'drogon_ctl help press' for more information)
version                 display version of this tool

7.切换到你想要的路径下面,参照官方文档使用drogon_ctl创建一个工程。

drogon_ctl create project your_project_name

然后,使用cmake编译

cd build
cmake ..

最后,打开build中的sln工程

8.把drogon_project设为启动项,右键drogon_project-属性-C/C++ -代码生成-运行库。切换成多线程DLL/md。这样工程就创建好了。

2.Drogon的使用

1.创建控制器

Drogon有HttpSimpleController、HttpController、WebSocketController。最常用的是HttpController,下面尝试进行分析。首先运行下面的代码

drogon_ctl create controller TestController

创建完了之后可以发现controllers文件夹中有TestController.h和TestController.cc。

然后对将两个文件分别进行修改。

.h的代码如下

#ifndef BIANYUANCONTROLLER_H
#define BIANYUANCONTROLLER_H

#include <drogon/HttpController.h>

using namespace drogon;

class BianyuanController : public drogon::HttpController<BianyuanController>
{
public:
	METHOD_LIST_BEGIN
		// 绑定路由到处理函数
		ADD_METHOD_TO(BianyuanController::handleRequest, "/bianyuan", Get);
	METHOD_LIST_END

		// 处理请求的函数声明
		void handleRequest(const HttpRequestPtr& req, std::function<void(const HttpResponsePtr&)>&& callback);

private:
	// 自定义函数声明
	std::string customFunction();
};

#endif // BIANYUANCONTROLLER_H

.cc的代码如下

#include "conf1.h"

void BianyuanController::handleRequest(const HttpRequestPtr& req, std::function<void(const HttpResponsePtr&)>&& callback)
{
	// 调用自定义函数
	std::string result = customFunction();

	// 创建HTTP响应并发送回客户端
	auto resp = HttpResponse::newHttpResponse();
	resp->setContentTypeCode(drogon::CT_TEXT_PLAIN);
	resp->setBody(result);
	callback(resp);
}

std::string BianyuanController::customFunction()
{
	// 你的自定义函数逻辑
	return "Hello from /bianyuan!";
}
ADD_METHOD_TO(BianyuanController::handleRequest, "/bianyuan", Get);

这句话是绑定的核心。首先创建了一个BianyuanController类,然后将处理函数handleRequest和“/bianyuan”路由进行了绑定!在处理函数中,定义了一个结果result,并将这个结果进行callback。这个结果是由自定义函数(边缘检测)得到的。

这样就实现了了:访问“localhost/bianyuan”,然后调用自定义函数再回传。

2.观察控制器

观察控制器的绑定,得到两个想法:

(1)控制器的绑定是在一个自定义类下完成的,这样就可以实现面向对象设计,如果这个类负责边缘检测,那么所有边缘检测的相关路径和相关函数都在这个类下进行绑定,就完成了和主函数的解耦!

(2)路径的唯一性。由于路径是分别在不同的类下面进行绑定,如果路径相同会怎么样?比如类A绑定了(/test),类B也绑定了(/test)。下面进行测试

得到结果是报错。这样就保证了唯一的路径绑定唯一的处理方法。

标签:框架,windows,绑定,x64,drogon,vcpkg,测试,ctl,Drogon
From: https://blog.csdn.net/Zouwii/article/details/141312697

相关文章

  • 关于MNN工程框架编译出来的静态库和动态库的使用
    一、MNN.lib文件路径如果你看过之前的博客内容,应该可以在编译的的工程当中C:\Users\Administrator\Desktop\MNN\MNN-master\MNN-CPU-OPENCL\lib\x64\lib\x64该路径下面找到debug和release两个文件夹。进入到release文件夹下面有Dynamic和Static两个文件夹,分别代表编译出来的......
  • hbu2024暑假进阶训练营开营测试
    目录7-1考试成绩7-2心理阴影面积7-1考试成绩题目RainSure同学在参加一场面试,一共有n道题目,他的初始分数为m分。RainSure回答错一道题目就会扣一分,但是分数不会小于0;回答正确一道题目就会加一分。给定一个长度为n的字符串,第i个字符如果为o,代表第i道题目RainSur......
  • 【渗透测试】Vulnhub DarkHole
    渗透环境攻击机:   IP: 192.168.216.129(Kali)靶机:     IP:192.168.216.130靶机下载地址:https://www.vulnhub.com/entry/darkhole-1,724/进行渗透一、获取端口信息nmap或者arp-scan都能扫除IP,这里就不赘述了。先看看开放了哪些端口。nmap-O-sV-p--A192.......
  • 8月22日在线研讨会 | 如何提高仿真测试的真实性和覆盖度
        仿真环境与真实世界之间的差异使得仿真测试的可靠性备受挑战,确保测试覆盖度也是一大难题。    经纬恒润的OrienLink平台基于实车测试和积累的海量真实数据,开发了基于真实数据的“闭环”仿真系统。该系统通过实时数据反馈和状态机模型优化(如Reactive-Replay方法......
  • CANoe_UDS-boorloader 自动化测试系列(二)基本功能:CAPL实现UDS协议下的CAN报文接收#解析
    目录一、前言二、CAPL实现1、报文接收接收报文函数:2、报文发送发送报文函数:三、总结展望一、前言halle,大家好,我是小鸟鹏。上篇文章《CANoe_UDS-boorloader自动测试系列(二)基本刷写流程》简单介绍了整Bootloader的基本刷写流程,包括具体使用哪些服务实现哪些功能,对......
  • 《软件性能测试分析与调优实践之路》(第2版) 读书笔记(二)总体介绍(下)-真正从性能分析与
    《软件性能测试分析与调优实践之路》(第2版) 是清华大学出版社出版的一本图书,作者为张永清,全书共分为9章,如下图所示 图书介绍:《软件性能测试分析与调优实践之路》(第2版) 本文是接着 《软件性能测试分析与调优实践之路》(第2版)读书笔记(一)总体介绍(上)-真正从性能分析与调......
  • 【软件测试】2023年职业院校技能大赛高职组“软件测试”赛项样题
    目录一、竞赛时间、内容及成绩组成二、竞赛须知三、任务说明(一)竞赛环境(二)竞赛任务文档(三)任务组成任务一:单元测试(10分)任务二:设计功能测试文档(15分)任务三:功能测试(25分)任务四:自动化测试(20分)任务五:性能测试(20分)任务六:接口测试(5分)四、竞赛结果提交一、竞赛时......
  • 超硬核!一篇文章说全、说全磁盘性能测试工具-Fio
    Part1 什么是FioFio(FlexibleI/OTester)是一款由Axboe开发的一款开源磁盘I/O性能测试工具,目前支持Linux及Windows平台,目前已发布的最新版本为3.37。Fio允许你生成许多线程或进程,执行指定的特定类型的I/O操作来模拟不同的I/O负载场景。Fio官方网站:https://fio.readthedoc......
  • 生成式人工智能大模型备案-测试题集和词库
    围绕模型不应拒答的问题建立非拒答测试题库:非拒答测试题库应具有全面性,总规模不宜少于500题,从应改为宜。非拒答测试题库应具有代表性,应至少覆盖我国制度、信仰、形象、文化、习俗、民族、地理、历史、英烈等方面,以及个人的性别、年龄、职业、健康等方面,每一种测试题库均不宜......
  • 深入探究 Java 中的单元测试 Mock 技术
    在软件开发中,单元测试是确保代码质量和稳定性的重要手段。而Mock技术在单元测试中扮演着至关重要的角色,它能够帮助我们隔离外部依赖,更有效地对单个模块进行测试。本文将深入探讨Java中的单元测试Mock技术。一、单元测试与Mock技术概述单元测试是对软件中的最小可测试......