`
100Continue
  • 浏览: 159288 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

TFS Restful 接口测试总结分享

阅读更多

需求:

近期刚刚完成Nginx 版本的 TFS (Taobao FileSystem) Restful 接口测试工作,借此契机总结分享以下3点:

1. Restufl简介;2. TFS Restful接口设计思路; 3. TFS Restful接口开发过程中容易出现的bug分析(重点介绍)


解决方案:

1. Restful简介:


Restful的一个思想就是充分利用http的特性,将资源独立出来,并对资源可以有各种操作。比如http标准的get/put/delete/post/header/option等。

 

一般来说,get/put/delete是等幂的操作,也就是说,相同的多次操作,原则上是不应该影响到最终结果的。而post则多用于添加一个新的资源,是一个不等幂的操作,多次重复操作,产生的最终效果会不一致,比如可能会创建了多个资源,这个现象在我们在提交浏览器表单请求的时候可以看到,重复提交,浏览器会有提示的。

Get操作的原则是不会改变数据的本身,它不应该做对数据的修改等操作。

Put则仅仅是对数据做更新操作。

Delete则仅仅是删除数据的操作了。

 

所以,可以看出,restful接口对资源和操作有一个很清晰的定义与界限。


2. TFS Restful接口设计思路:


TFS来说,他是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,其设计目标是支持海量的非结构化数据。而数据就是一种资源,在对该资源进行适当的分类之后(分为原生TFS文件名和自定义TFS文件名),那对这个资源就可以进行各种不同的操作。 在此将各种不同的操作分为以下2类:

第一类:增删改查操作:

写文件:可以用Post操作来实现,如:POST /v1/appkey HTTP/1.1。 其中v1表示为原生TFS文件名资源,appkey表示所操作的应用(每个不同的应用具有不同的操作权限和优先级别);操作成功后将返回Status 200 OK及resposne body内包含的文件名;若操作失败,将返回相应错误信息的Status状态码,如400 Bad Request, 500 Internal Server Error等信息,便于使用人员debug问题。


读文件:可以用Get操作来实现,如: GET /v1/appkey/TfsFileName HTTP/1.1。 其中TfsFileName表示所需要读取的文件名;操作成功后将返回Status 200 OK及response body内包含所要获取的文件内容;若操作失败,将返回相应错误信息的Status状态码,如400, 500和404 Not Found等信息。


删文件:可以用Delete操作来实现,如:DELETE /v1/appkey/TfsFileName HTTP/1.1。 操作成功后将返回Status 200 OK 无需返回response body信息;若操作失败,依然返回错误信息的Status状态码。


获取文件元信息: 元信息指数据的一些基本信息,如存放位置、文件大小、当前状态(删除、隐藏等)等信息,依然可以通过Get操作来实现,如: GET /v1/appkey/metadata/TfsFileName HTTP/1.1。 在url中增加metadata字段,以此来区分是否读取文件的元信息。操作成功后将返回Status 200 OK及response body内包含文件的元信息数据;若操作失败则返回错误信息的Status状态码。


第二类:由于TFS本身的特性,因此会有像指定suffix/delete/hide/offset/size等更多操作。可以将这些控制信息放到url的args里面。如: GET /v1/appkey/TfsFileName?suffix=.jpg&offset=6&size=2012 HTTP/1.1。 之后通过Nginx对请求的解析信息来做后续的数据库请求逻辑处理。


3. TFS Restful接口开发过程中容易出现的bug分析

将TFS Restful接口开发过程容易出现的bug分为以下4类:

1. TFS Restful 与 后端数据库TFS 之间的TCP通讯:

a. TFS Restful 在处理读、写请求完成之后不关闭与客户端的连接,导致大量TCP连接处于Close_Wati状态,无法释放连接,最终导致连接数耗尽 ;这是由于TFS Restful在完成处理请求并接收到Client端返回的FIN数据包后,未返回FIN数据包,单方面hold住了TCP连接;

b. TFS Restful 未能正确处理后端TFS响应超时问题;这是由于后端TFS由于网络堵塞等问题,无法在正常时间内返回响应,而TFS Restful所设置的超时处理不生效,导致TFS Restful hold。


2. TFS Restful内部数据存储:

a. TFS Restful 在集群间重试的时候没有修改对应的接收buf;

   b. TFS Restful获取不到 所需删除的物理集群地址;

c.  TFS Restful 分配tfs_module_rcs_zone 内存时出错;


这是由于TFS是分布式数据库,涉及多集群处理,因此TFS Restful在各个集群之间获取信息时,需要修改相对应的接收buf,否则将导致数据不正确。


3. TFS Restful控制信息处理不正确:

a. TFS Resultful size测试设置为0是没有返回badrequest, 而是出现访问异常:read timeout;

b. TFS Restful 读文件请求offset等于文件大小时read timeout ;


这是由于TFS Restful对控制信息的处理不正确,导致读取TFS集群失败;


4. TFS Restful对返回错误信息处理不正确:

a. TFS Restful 选择集群失败时返回500而不是404;

b. TFS resultful 读取文件时Response没有返回content-typeaccpet-ranges头信息 ;

c. TFS resultful 读取不存在的block信息时,返回的error code不正确 ;

d. TFS Resultful 查询元信息时请求uri没有设置appkey时返回error code不正确 ;


这是由于TFS Restful response信息设置不正确所导致的。


OK, TFS Restful 接口测试总结分享介绍完毕,欢迎拍砖。转发请备注转自:100continue.iteye.com。 谢谢。

 

分享到:
评论
1 楼 echohfut 2015-06-01  
请问tfs nginx性能测试如何阿?比如20k小文件,8核配置普通配置机器,8线程,每秒上传tfs吞吐量有多少?

相关推荐

    TFSRestful接口测试总结分享

    Restful接口测试工作,借此契机总结分享以下3点:1、Restufl简介;2、TFSRestful接口设计思路;3、TFS Restful接口开发过程中容易出现的bug分析(重点介绍)解决方案:1、Restful简介:Restful的一个思想就是充分...

    UFT_API 接口测试

    - **RESTful服务测试**:RESTful架构已经成为现代Web服务的标准设计模式之一,UFT提供了对RESTful服务的支持,可以轻松创建和管理RESTful接口测试用例。 - **JSON/XML数据格式处理**:API测试经常涉及到JSON或XML...

    TFS JavaAPI源码(附带JUinit测试用例)

    这些操作通常通过HTTP或TCP协议完成,利用TFS的RESTful接口。 3. **元数据管理**:TFS支持文件的元数据存储,如文件大小、创建时间等。API提供了获取和修改元数据的方法。 4. **分块上传**:对于大文件,TFS支持...

    tfs 2.4.3 及 nginx-tfs 编译安装

    - 安装Nginx,并对其进行配置以支持TFS的RESTful风格接口。 - 调整Nginx配置文件,添加TFS相关模块。 - 最后进行Nginx的编译和安装。 **3. 注意事项** - 在配置过程中需要注意IP地址和端口号的正确性。 - 确保...

    TFS:通过REST接口驱动TFS 2015+的Powershell模块

    【TFS:通过REST接口驱动TFS 2015+的Powershell模块】是一个专注于利用RESTful API与PowerShell结合,实现对Team Foundation Server(TFS)2015及更高版本进行自动化操作的技术主题。在现代的DevOps环境中,这样的...

    RegPreciseREST:用于访问 RegPrecise 数据库的 RESTful Web 服务

    总的来说,RegPreciseREST 通过 RESTful API 提供了一个强大且易用的接口,使得研究人员能够无缝地集成 RegPrecise 数据库中的丰富信息,进一步推动生物学研究的进步。在 Java 开发环境中,利用 Spring Boot 等工具...

    asp.net医药进销存系统【ASP】.zip

    6. **WCF服务或Web API**:如果系统需要与其他应用或移动设备集成,可能会使用Windows Communication Foundation (WCF)服务或ASP.NET Web API,提供RESTful接口进行数据交换。 7. **异常处理与日志记录**:为了确保...

    基于ASP.NET的全国拼车打车管理系统源码.zip

    7. **WebAPI或WCF服务**:为了实现全国范围内的数据交换和移动设备接入,系统可能利用ASP.NET的WebAPI或WCF服务技术,创建RESTful接口,使客户端(如手机APP)能方便地调用服务器端的业务逻辑。 8. **部署与配置**...

    Asp.Net技术文档CHM第二版下载

    14. **单元测试和持续集成**:介绍如何使用诸如NUnit和TFS等工具进行测试和自动化构建。 该压缩包中包含的"用前必读.txt"可能提供了关于文档使用的一些提示和注意事项,例如阅读顺序、查找特定主题的方法等。而"Asp...

    C#软件项目开发全程剖析

    同时,ASP.NET Web API用于构建RESTful服务,为移动和Web应用提供数据接口。 对于桌面应用,WPF(Windows Presentation Foundation)是C#开发现代Windows应用的首选,它提供了丰富的UI设计工具和强大的数据绑定功能...

    《ASP.NET高级开发技术与范例

    12. **单元测试和持续集成**:了解如何编写单元测试来验证代码质量,以及使用工具如TFS或Jenkins实现持续集成和持续部署。 通过本书的学习,读者将能够运用ASP.NET的高级特性,设计和开发高效、安全、可扩展的Web...

    asp.net密技集(c#)

    使用 NUnit、Moq 或其他测试框架进行单元测试,结合 Jenkins、TFS 等工具实现持续集成,是确保代码质量和项目进度的有效手段。 这个"ASP.NET密技集(c#)"可能包含了上述部分或全部主题的详细讲解,以及一些实战案例...

    VS2015版代码框架.zip

    在压缩包中的代码框架可能包括了类、对象、接口、继承、多态等核心概念的示例。 2. **MVC架构**:Model-View-Controller是Web开发中常用的一种设计模式,VS2015提供了内置支持。代码框架可能包含了创建MVC项目、...

    《ASP.NET Web 程序设计》

    ASP.NET提供了诸如 MSTest 和 NUnit 这样的测试框架,以及与TFS或VSTS的集成,助力自动化测试和构建流程。 通过学习《ASP.NET Web 程序设计》这本书,开发者能够掌握ASP.NET的核心技术和最佳实践,从而具备创建高效...

    ASP.NET 毕业设计选题系统网站.zip

    10. **API接口**:系统可能还包含RESTful API设计,供其他应用或服务调用,实现数据的共享和交互。 综上所述,这个ASP.NET毕业设计选题系统网站涵盖了Web开发的多个重要方面,包括但不限于架构设计、数据库交互、...

    ASP.NET 开发物资管理系统设计与实现(源代码+论文).zip

    6. **WebAPI或WCF**:如果系统包含Web服务接口,可能会使用ASP.NET WebAPI或Windows Communication Foundation(WCF)来创建和暴露RESTful服务,实现物资管理功能的远程调用。 7. **Bootstrap或CSS**:前端界面可能...

    asp.net 开发系统 Windows

    Web API则专为构建RESTful服务而设计,便于创建数据接口供其他应用或客户端使用。 在Windows操作系统上,开发ASP.NET应用通常使用Visual Studio IDE,这是一款功能强大的集成开发环境,集成了代码编辑、调试、版本...

    Asp Net密技集錦(C#).zip

    14. **单元测试和持续集成**:使用NUnit、MSTest或xUnit进行单元测试,以及TFS、Jenkins等工具进行持续集成,确保代码质量。 15. **响应式设计**:随着移动设备的普及,响应式设计确保ASP.NET应用在不同设备上都能...

Global site tag (gtag.js) - Google Analytics