Current Problems and Tools Support for Testing Distributed Systems

Total Page:16

File Type:pdf, Size:1020Kb

Current Problems and Tools Support for Testing Distributed Systems Current Problems and Tools Support for Testing Distributed Systems Anh Thu Le A dissertation submitted for the degree of Bachelor of Applied Science with Honours in the Department of Information Science at the University of Otago, Dunedin, New Zealand October 2006 1 Acknowledgments First of all, I would like to thank my supervisor, Dr. Maryam Purvis for her valuable supervision, suggestions, and encouragements during the course of my thesis. A special thank goes to Tony Bastin Roy Savarimuthu for being a thoughtful and accessible supporter. I thank the University of Otago Language Centre in Dunedin for making a number of systems available for testing. I also thank Professor Paul Strooper at the University of Queensland in Australia for his willingness in helping me to implement the ConAn testing tool. Finally, I would like to thank my parents for their precious support during my four years undergraduate education in Dunedin, New Zealand. 2 Abstract Testing is a critical activity in designing and implementing software and computer systems, especially distributed systems (Eickelmann & Richardson, 1996). In addition, validating distributed systems is a complex process, and it requires the knowledge of “the communication taking place and the order of communication messages exchanged between the individual components to avoid deadlocks or livelocks during runtime” (Ulrich, Zimmerer, Chrobok-Diening, 1999, p.2). This dissertation attempts to briefly emphasise the role of testing in distributed systems. In addition, it addresses few common issues in building distributed systems together with a number of solutions to these issues. The main focus of this dissertation is on three main features of distributed systems that often challenge the programmers and testers, which are concurrency, scalability, and fault tolerance. For the first two features, a number of open source testing tools are chosen to compare and contrast the strengths and weaknesses of each tool. A number of testing techniques are applied to show the importance of the third feature, namely, the fault tolerance. Besides, the importance of each feature is highlighted by testing a number of sample distributed systems. 3 Table of Contents Acknowledgments ............................................................................................................. 2 Abstract.............................................................................................................................. 3 Table of Contents .............................................................................................................. 4 Lists of Figures .................................................................................................................. 6 List of Tables ..................................................................................................................... 7 1. Introduction............................................................................................................... 8 2. Background ............................................................................................................. 10 2.1 Definition of a Distributed System ................................................................... 10 2.2 Characteristics of a Distributed System............................................................ 11 3. Research Objectives................................................................................................ 15 4. Testing Distributed Systems................................................................................... 16 4.1 Unit testing........................................................................................................ 20 4.2 Integration testing ............................................................................................. 20 4.3 Regression testing ............................................................................................. 21 4.4 System testing ................................................................................................... 21 4.5 Acceptance testing ............................................................................................ 22 5. Issues and Solutions................................................................................................ 23 5.1 Openness........................................................................................................... 23 5.2 Latency.............................................................................................................. 24 5.3 Global clock...................................................................................................... 24 5.4 Security ............................................................................................................. 25 5.5 Heterogeneity.................................................................................................... 26 6. Concurrency Testing .............................................................................................. 27 6.1 Concurrency in Distributed System.................................................................. 27 6.2 Systems: Cathy’s Online Car Store, CalME, and E-shopping.......................... 29 6.2.1 Cathy’s Online Car Store.......................................................................... 29 6.2.2 CalME....................................................................................................... 34 6.2.3 E-Shopping ............................................................................................... 39 6.3 Tools: GroboTestingJUnit and ConAn ............................................................. 42 4 6.3.1 GroboTestingJUnit (version 1.1.0) ........................................................... 42 6.3.2 ConAn (version 5.0).................................................................................. 43 6.3.3 Summary................................................................................................... 44 7. Scalability Testing................................................................................................... 45 7.1 Scalability in Distributed System...................................................................... 45 7.2 Systems: OLC Assets, DCRR, and Employee Directory ................................. 47 7.2.1 OLC Assets ............................................................................................... 48 7.2.2 DCRR........................................................................................................ 51 7.2.3 Employee Directory.................................................................................. 53 7.3 Tools: TestMaker, OpenSTA, and httperf ........................................................ 56 7.3.1 TestMaker (version 4.4)............................................................................ 56 7.3.2 OpenSTA (version 1.4.3).......................................................................... 57 7.3.3 httperf........................................................................................................ 58 7.3.4 Summary................................................................................................... 58 8. Fault Tolerance Testing.......................................................................................... 60 8.1 Fault Tolerance in Distributed System ............................................................. 60 8.2 Systems: CalME and OLC Assets .................................................................... 61 8.2.1 CalME....................................................................................................... 62 8.2.2 OLC Assets ............................................................................................... 62 9. Conclusion and Future Work ................................................................................ 63 10. References................................................................................................................ 64 11. Appendix.................................................................................................................. 70 11.1 Appendix 1: DeleteAndOrderCarTest.java....................................................... 70 11.2 Appendix 2: CreateGroupTest1.java and CreateGroupTest2.java ................... 71 11.3 Appendix 3: CreateAppTest1.java and CreateAppTest2.java .......................... 73 11.4 Appendix 4: EditExistingCategoriesTestA.java and ........................................ 75 EditExistingCategoriesTestB.java ................................................................................ 75 11.5 Appendix 5: OLC Asset XSTest Scalability Index........................................... 77 11.6 Appendix 6: DCRR XSTest Scalability Index.................................................. 78 11.7 Appendix 7: Employee Directory XSTest Scalability Index............................ 79 5 Lists of Figures Figure 1: A Distributed System Organized as Middleware Figure 2: Traditional Testing Process Figure 3: Test and Code Cycle in XP Figure 4: Waterfall Model Figure 5: V Software Life-cycle Model Figure 6: Spiral Model Figure 7: Message Transmission Time Figure 8: User adds a Car - Cathy’s Online Car Store Figure 9: User Views/Deletes/Orders a Car - Cathy’s Online Car Store Figure 10: Scenario 1 – Cathy’s Online Car Store Figure 11: Scenario 2 – Cathy’s Online Car Store Figure 12: Scenario 3 – CalME Figure 13: Scenario 4 – CalME Figure 14: User Enters a New Category - E-Shopping
Recommended publications
  • Model Driven Scheduling for Virtualized Workloads
    Model Driven Scheduling for Virtualized Workloads Proefschrift voorgelegd op 28 juni 2013 tot het behalen van de graad van Doctor in de Wetenschappen – Informatica, bij de faculteit Wetenschappen, aan de Universiteit Antwerpen. PROMOTOREN: prof. dr. Jan Broeckhove dr. Kurt Vanmechelen Sam Verboven RESEARCH GROUP COMPUTATIONAL MODELINGAND PROGRAMMING Dankwoord Het behalen van een doctoraat is een opdracht die zonder hulp onmogelijk tot een goed einde kan gebracht worden. Gelukkig heb ik de voorbije jaren de kans gekregen om samen te werken met talrijke stimulerende collega’s. Stuk voor stuk hebben zij bijgedragen tot mijn professionele en persoonlijke ontwikkeling. Hun geduldige hulp en steun was essentieel bij het overwinnen van de vele uitdagingen die met een doctoraat gepaard gaan. Graag zou ik hier dan ook enkele woorden van dank neerschrijven. Allereerst zou ik graag prof. dr. Jan Broeckhove en em. prof. dr. Frans Arickx bedanken om mij de kans te geven een gevarieerde en boeiend academisch traject te starten. Bij het beginnen van mijn doctoraat heeft Frans mij niet alleen geholpen om een capabel onderzoeker te worden, ook bij het lesgeven heeft hij mij steeds met raad en daad bijgestaan. Na het emiraat van Frans heeft Jan deze begeleiding overgenomen en er voor gezorgd dat ik het begonnen traject ook succesvol kon beeïndigen. Beiden hebben ze mij steeds grote vrijheid gegeven in mijn zoektocht om interessante onderzoeksvragen te identificeren en beantwoorden. Vervolgens zou ik graag dr. Peter Hellinckx en dr. Kurt Vanmechelen bedanken voor hun persoonlijke en vaak intensieve begeleiding. Zelfs voor de start van mijn academische carrière, bij het schrijven van mijn Master thesis, heeft Peter mij klaar- gestoomd voor een vlotte start als onderzoeker.
    [Show full text]
  • Towards Better Performance Per Watt in Virtual Environments on Asymmetric Single-ISA Multi-Core Systems
    Towards Better Performance Per Watt in Virtual Environments on Asymmetric Single-ISA Multi-core Systems Viren Kumar Alexandra Fedorova Simon Fraser University Simon Fraser University 8888 University Dr 8888 University Dr Vancouver, Canada Vancouver, Canada [email protected] [email protected] ABSTRACT performance per watt than homogeneous multicore proces- Single-ISA heterogeneous multicore architectures promise to sors. As power consumption in data centers becomes a grow- deliver plenty of cores with varying complexity, speed and ing concern [3], deploying ASISA multicore systems is an performance in the near future. Virtualization enables mul- increasingly attractive opportunity. These systems perform tiple operating systems to run concurrently as distinct, in- at their best if application workloads are assigned to het- dependent guest domains, thereby reducing core idle time erogeneous cores in consideration of their runtime proper- and maximizing throughput. This paper seeks to identify a ties [4][13][12][18][24][21]. Therefore, understanding how to heuristic that can aid in intelligently scheduling these vir- schedule data-center workloads on ASISA systems is an im- tualized workloads to maximize performance while reducing portant problem. This paper takes the first step towards power consumption. understanding the properties of data center workloads that determine how they should be scheduled on ASISA multi- We propose that the controlling domain in a Virtual Ma- core processors. Since virtual machine technology is a de chine Monitor or hypervisor is relatively insensitive to changes facto standard for data centers, we study virtual machine in core frequency, and thus scheduling it on a slower core (VM) workloads. saves power while only slightly affecting guest domain per- formance.
    [Show full text]
  • Big Data Benchmarking Workshop Publications
    Benchmarking Datacenter and Big Data Systems Wanling Gao, Zhen Jia, Lei Wang, Yuqing Zhu, Chunjie Luo, Yingjie Shi, Yongqiang He, Shiming Gong, Xiaona Li, Shujie Zhang, Bizhu Qiu, Lixin Zhang, Jianfeng Zhan INSTITUTE OFTECHNOLOGY COMPUTING http://prof.ict.ac.cn/ICTBench 1 Acknowledgements This work is supported by the Chinese 973 project (Grant No.2011CB302502), the Hi- Tech Research and Development (863) Program of China (Grant No.2011AA01A203, No.2013AA01A213), the NSFC project (Grant No.60933003, No.61202075) , the BNSFproject (Grant No.4133081), and Huawei funding. 2/ Big Data Benchmarking Workshop Publications BigDataBench: a Big Data Benchmark Suite from Web Search Engines. Wanling Gao, et al. The Third Workshop on Architectures and Systems for Big Data (ASBD 2013) in conjunction with ISCA 2013. Characterizing Data Analysis Workloads in Data Centers. Zhen Jia, et al. 2013 IEEE International Symposium on Workload Characterization (IISWC-2013) Characterizing OS behavior of Scale-out Data Center Workloads. Chen Zheng et al. Seventh Annual Workshop on the Interaction amongst Virtualization, Operating Systems and Computer Architecture (WIVOSCA 2013). In Conjunction with ISCA 2013.[ Characterization of Real Workloads of Web Search Engines. Huafeng Xi et al. 2011 IEEE International Symposium on Workload Characterization (IISWC-2011). The Implications of Diverse Applications and Scalable Data Sets in Benchmarking Big Data Systems. Zhen Jia et al. Second workshop of big data benchmarking (WBDB 2012 India) & Lecture Note in Computer
    [Show full text]
  • An Experimental Evaluation of Datacenter Workloads on Low-Power Embedded Micro Servers
    An Experimental Evaluation of Datacenter Workloads On Low-Power Embedded Micro Servers Yiran Zhao, Shen Li, Shaohan Hu, Hongwei Wang Shuochao Yao, Huajie Shao, Tarek Abdelzaher Department of Computer Science University of Illinois at Urbana-Champaign fzhao97, shenli3, shu17, hwang172, syao9, hshao5, [email protected] ABSTRACT To reduce datacenter energy cost, power proportional- This paper presents a comprehensive evaluation of an ultra- ity [47] is one major solution studied and pursued by both low power cluster, built upon the Intel Edison based micro academia and industry. Ideally, it allows datacenter power servers. The improved performance and high energy effi- draw to proportionally follow the fluctuating amount of work- ciency of micro servers have driven both academia and in- load, thus saving energy during non-peak hours. However, dustry to explore the possibility of replacing conventional current high-end servers are not energy-proportional and brawny servers with a larger swarm of embedded micro ser- have narrow power spectrum between idling and full uti- vers. Existing attempts mostly focus on mobile-class mi- lization [43], which is far from ideal. Therefore, researchers cro servers, whose capacities are similar to mobile phones. try to improve energy-proportionality using solutions such We, on the other hand, target on sensor-class micro servers, as dynamic provisioning and CPU power scaling. The for- which are originally intended for uses in wearable technolo- mer relies on techniques such as Wake-On-LAN [36] and gies, sensor networks, and Internet-of-Things. Although VM migration [24] to power on/off servers remotely and dy- sensor-class micro servers have much less capacity, they are namically.
    [Show full text]
  • Adaptive Control of Apache Web Server
    Adaptive Control of Apache Web Server Erik Reed Abe Ishihara Ole J. Mengshoel Carnegie Mellon University Carnegie Mellon University Carnegie Mellon University Moffett Field, CA 94035 Moffett Field, CA 94035 Moffett Field, CA 94035 [email protected] [email protected] [email protected] Abstract least load. Typical implementations of load balancing deal with round robin balancing for domain name service Traffic to a Web site can vary dramatically. At the same (DNS) [7]. Much of existing frameworks and previous time it is highly desirable that a Web site is reactive. To research deal with inter-server connections and balanc- provide crisp interaction on thin clients, 150 milliseconds ing, with little or no focus on dynamic parameter adjust- has been suggested as an upper bound on response time. ment of individual servers. Unfortunately, the popular Apache Web server is lim- Focusing on an individual Web server rather than a ited in its capabilities to be reactive under varying traf- cluster of machines, we investigate in this paper an alter- fic. To address this problem, we design in this paper an native approach to ensuring quick and predictable user adaptive controller for the Apache Web server. A modi- response, namely feedback control and specifically Min- fied recursive least squares algorithm is used to identify imum Degree Pole Placement control [5]. This can be in system dynamics and a minimum degree pole placement an environment where inter-server load balancing is al- controller is implemented to adjust the maximum num- ready in place, or when a single server is handling Web ber of concurrent connections.
    [Show full text]
  • Energy Efficiency of Server Virtualization
    Energy Efficiency of Server Virtualization Jukka Kommeri Tapio Niemi Olli Helin Helsinki Institute of Physics, Helsinki Institute of Physics, Helsinki Institute of Physics, Technology program, CERN, Technology program, CERN, Technology program, CERN, CH-1211 Geneva 23, Switzerland CH-1211Geneva 23, Switzerland CH-1211 Geneva 23, Switzerland [email protected] [email protected] [email protected] Abstract—The need for computing power keeps on growing. combine several services into one physical server. In this The rising energy expenses of data centers have made server way, these technologies make it possible to take better consolidation and virtualization important research areas. advantage of hardware resources. Virtualization and its performance have received a lot of attention and several studies can be found on performance. In this study, we focus on energy efficiency of different So far researches have not studied the overall performance virtualization technologies. Our aim is to help the system and energy efficiency of server consolidation. In this paper we administrator to decide how services should be consolidated study the effect of server consolidation on energy efficiency with to minimize energy consumption without violating quality an emphasis on quality of service. We have studied this with of service agreements. several synthetic benchmarks and with realistic server load by performing a large set of measurements. We found out that We studied energy consumption of virtualized servers with energy-efficiency depends on the load of the virtualized service two open source virtualization solutions; KVM and Xen. and the number of virtualized servers. Idle virtual servers do They were tested both under load and idle.
    [Show full text]
  • Cigniti Technologies Service Sheet
    Cigniti Technologies Service Sheet Cigniti Technologies is an Independent Software Testing Services Company headquartered in Irving, Texas. Cigniti offers Test Consulting, Enterprise Mobility Testing, Regression Automation, Security and Performance Testing services. Over the last 14 years, leveraging its Smart Tools, Cigniti helped Enterprises and ISVs build quality software while improving time to market and reducing cost of quality. Designed to deliver quality solutions, the service portfolio spans technologies transcending Cloud, Mobile, Social, Big Data and Enter- prise IT across verticals and ensures impeccable standards of QA. World’s 3rd Largest Independent Software Testing Services Company Dallas | Hyderabad | Atlanta | San Jose | Des Moines | London | Toronto | www.cigniti.com Service Sheet Over the last decade, there has been a lot of transformation in the philosophy of testing and several tools have been introduced in the market place. With so many choices around, it has become a real challenge to choose the right testing partner / service provider. The Testing industry has witnessed a phenomenal growth in term of offerings, tools, and infrastructure with diverse engagement models. Now, it has become a lot more important for organizations to choose the right testing partner. Cigniti delivers Independent Quality Assurance Services backed by its proprietary IP. As a strategic partner, Cigniti brings comprehensive service offerings in the Quality Assurance space which accelerate overall test efforts for its clients. Cigniti’s Service Offerings TCoE Performance Testing Security Testing Cigniti's Test Center of Excellence Cigniti’s new age performance Cigniti’s security testing services lays down roadmaps for scalable testing frameworks initiate and ensure early detection with com- frameworks that enrich business revitalize performance across prehensive vulnerability assess- outcomes with speed, skill and systems, networks and software ment and match the emerging accuracy.
    [Show full text]
  • Remote Profiling of Resource Constraints of Web Servers Using
    Remote Profiling of Resource Constraints of Web Servers Using Mini-Flash Crowds Pratap Ramamurthy Vyas Sekar Aditya Akella Balachander Krishnamurthy UW-Madison CMU UW-Madison AT&T–Labs Research Anees Shaikh IBM Research Abstract often limited, this can be difficult. Hence, large providers Unexpected surges in Web request traffic can exercise who can afford it typically resort to over-provisioning, or server-side resources (e.g., access bandwidth, process- employ techniques such as distributed content delivery or ing, storage etc.) in undesirable ways. Administra- dynamic server provisioning, to minimize the impact of tors today do not have requisite tools to understand the unexpected surges in request traffic. Smaller application impact of such “flash crowds” on their servers. Most providers may trade-off robustness to large variations in Web servers either rely on over-provisioning and admis- workload for a less expensive infrastructure that is provi- sion control, or use potentially expensive solutions like sioned for the expected common case. CDNs, to ensure high availability in the face of flash This approach still leaves operators without a sense crowds. A more fine-grained understanding of the per- of how their application infrastructure will handle large formance of individual server resources under emulated increases in traffic, due to planned events such as annual but realistic and controlled flash crowd-like conditions sales or Web casts, or unexpected flash crowds. While can aid administrators to make more efficient resource these events may not occur frequently, the inability of the management decisions. In this paper, we present mini- infrastructure to maintain reasonably good service, or at flash crowds (MFC) – a light-weight profiling service least degrade gracefully, can lead to significant loss of that reveals resource bottlenecks in a Web server infras- revenue and dissatisfied users.
    [Show full text]
  • Test Center of Excellence How Can It Be Set Up? ISSN 1866-5705
    ISSN 1866-5705 www.testingexperience.com free digital version print version 8,00 € printed in Germany 18 The Magazine for Professional Testers The MagazineforProfessional Test Center of Excellence Center Test How can itbesetup? How June 2012 Pragmatic, Soft Skills Focused, Industry Supported CAT is no ordinary certification, but a professional jour- The certification does not simply promote absorption ney into the world of Agile. As with any voyage you have of the theory through academic mediums but encour- to take the first step. You may have some experience ages you to experiment, in the safe environment of the with Agile from your current or previous employment or classroom, through the extensive discussion forums you may be venturing out into the unknown. Either way and daily practicals. Over 50% of the initial course is CAT has been specifically designed to partner and guide based around practical application of the techniques you through all aspects of your tour. and methods that you learn, focused on building the The focus of the course is to look at how you the tes- skills you already have as a tester. This then prepares ter can make a valuable contribution to these activities you, on returning to your employer, to be Agile. even if they are not currently your core abilities. This The transition into a Professional Agile Tester team course assumes that you already know how to be a tes- member culminates with on the job assessments, dem- ter, understand the fundamental testing techniques and onstrated abilities in Agile expertise through such fo- testing practices, leading you to transition into an Agile rums as presentations at conferences or Special Interest team.
    [Show full text]
  • Optimal Power Allocation in Server Farms
    Optimal Power Allocation in Server Farms Anshul Gandhi∗ Mor Harchol-Balter∗ Rajarshi Das† Charles Lefurgy†† March 2009 CMU-CS-09-113 School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 ∗School of Computer Science, Carnegie Mellon University, Pittsburgh, PA, USA †IBM T.J. Watson Research Center, Hawthorne, NY, USA ††IBM Research, Austin, TX, USA Research supported by NSF SMA/PDOS Grant CCR-0615262 and a 2009 IBM Faculty Award. The views and conclusions contained in this document are those of the authors and should not be interpreted as representing the official policies, either expressed or implied, of NSF or IBM. Keywords: Power Management, Server Farm, Response Time, Power-to-Frequency, Data Center Abstract Server farms today consume more than 1.5% of the total electricity in the U.S. at a cost of nearly $4.5 billion. Given the rising cost of energy, many industries are now looking for solutions on how to best make use of their available power. An important question which arises in this context is how to distribute available power among servers in a server farm so as to get maximum perfor- mance. By giving more power to a server, one can get higher server frequency (speed). Hence it is commonly believed that for a given power budget, performance can be maximized by oper- ating servers at their highest power levels. However, it is also conceivable that one might prefer to run servers at their lowest power levels, which allows more servers for a given power budget. To fully understand the effect of power allocation on performance in a server farm with a fixed power budget, we introduce a queueing theoretic model, which also allows us to predict the opti- mal power allocation in a variety of scenarios.
    [Show full text]
  • Benchmarking Models and Tools for Distributed Web-Server Systems
    Benchmarking Models and Tools for Distributed Web-Server Systems Mauro Andreolini1, Valeria Cardellini1, and Michele Colajanni2 1 Dept. of Computer, Systems and Production University of Roma “Tor Vergata” Roma I-00133, Italy andreolini,cardellini @ing.uniroma2.it, { } 2 Dept. of Information Engineering University of Modena Modena I-41100, Italy [email protected] Abstract. This tutorial reviews benchmarking tools and techniques that can be used to evaluate the performance and scalability of highly accessed Web-server systems. The focus is on design and testing of lo- cally and geographically distributed architectures where the performance evaluation is obtained through workload generators and analyzers in a laboratory environment. The tutorial identifies the qualities and issues of existing tools with respect to the main features that characterize a benchmarking tool (workload representation, load generation, data col- lection, output analysis and report) and their applicability to the analysis of distributed Web-server systems. 1 Introduction The explosive growth in size and usage of the Web is causing enormous strain on users, network service, and content providers.Sophisticated software components have been implemented for the provision of critical services through the Web. Consequently, many research efforts have been directed toward improving the performance of Web-based services through caching and replication solutions.A large variety of novel content delivery architectures, such as distributed Web- server systems, cooperative proxy
    [Show full text]
  • NCA’04) 0-7695-2242-4/04 $ 20.00 IEEE Interesting Proposals
    WALTy: A User Behavior Tailored Tool for Evaluating Web Application Performance G. Ruffo, R. Schifanella, and M. Sereno R. Politi Dipartimento di Informatica CSP Sc.a.r.l. c/o Villa Gualino Universita` degli Studi di Torino Viale Settimio Severo, 65 - 10133 Torino (ITALY) Corso Svizzera, 185 - 10149 Torino (ITALY) Abstract ticular, stressing tools make what-if analysis practical in real systems, because workload intensity can be scaled to In this paper we present WALTy (Web Application Load- analyst hypothesis, i.e., a workload emulating the activity based Testing tool), a set of tools that allows the perfor- of N users with pre-defined behaviors can be replicated, mance analysis of web applications by means of a scalable in order to monitor a set of performance parameters dur- what-if analysis on the test bed. The proposed approach is ing test. Such workload is based on sequences of object- based on a workload characterization generated from infor- requests and/or analytical characterization, but sometimes mation extracted from log files. The workload is generated they are poorly scalable by the analyst; in fact, in many by using of Customer Behavior Model Graphs (CBMG), stressing framework, we can just replicate a (set of) man- that are derived by extracting information from the web ap- ually or randomly generated sessions, losing in objectivity plication log files. In this manner the synthetic workload and representativeness. used to evaluate the web application under test is repre- The main scope of this paper is to present a methodol- sentative of the real traffic that the web application has to ogy based on the generation of a representative traffic.
    [Show full text]