Drupal

Security public service announcements: Drupal 7 will reach end-of-life in November of 2021 - PSA-2019-02-25

Planet Drupal - 25 February 2019 - 9:17am
Date: 2019-February-25Vulnerability:  Drupal 7 will reach end-of-life in November of 2021Description: 

Drupal 7 was first released in January 2011. In November 2021, after over a decade, Drupal 7 will reach end of life (EOL). (More information on why this date was chosen.) Official community support for version 7 will end, along with support provided by the Drupal Association on Drupal.org. This means that automated testing services for Drupal 7 will be shut down, and there will be no more updates provided by the Drupal Security Team.

When this occurs, Drupal 7 will be marked end-of-life in the update manager, which appears in the Drupal administrative interface. Updates, security fixes, and enhancements will no longer be provided by the community, but may be available on a limited basis from select commercial vendors.

If you have a site that is running on Drupal 7, now is the time to start planning the upgrade. Note that the transition from Drupal 8 to Drupal 9 will not be the significant effort that the transition from 7 to 8 was. In fact, the first release of Drupal 9 will be identical to the last release of Drupal 8, except with deprecated code removed and dependencies updated to newer versions. (See Plan for Drupal 9 for more information on Drupal 9.)

What this means for your Drupal 7 sites is, as of November 2021:

  • Drupal 7 will no longer be supported by the community at large. The community at large will no longer create new projects, fix bugs in existing projects, write documentation, etc. around Drupal 7.
  • There will be no more core commits to Drupal 7.
  • The Drupal Security Team will no longer provide support or Security Advisories for Drupal 7 core or contributed modules, themes, or other projects. Reports about Drupal 7 vulnerabilities might become public creating 0 day exploits.
  • All Drupal 7 releases on all project pages will be flagged as not supported. Maintainers can change that flag if they desire to.
  • On Drupal 7 sites with the update status module, Drupal Core will show up as unsupported.
  • After November 2021, using Drupal 7 may be flagged as insecure in 3rd party scans as it no longer gets support.
  • Best practice is to not use unsupported software, it would not be advisable to continue to build new Drupal 7 sites.
  • Now is the time to start planning your migration to Drupal 8.

If, for any reason, you are unable to migrate to Drupal 8 or 9 by the time version 7 reaches end of life, there will be a select number of organizations that will provide Drupal 7 Vendor Extended Support (D7ES) for their paying clients. This program is the successor to the successful Drupal 6 LTS program. Like that program, it will be an additional paid service, fully operated by these organizations with some help from the Security Team.

The Drupal Association and Drupal Security Team will publish an announcement once we have selected the Drupal 7 Vendor Extended Support partners.

If you would like more information about the Drupal release cycle, consult the official documentation on Drupal.org. If you would like more information about the upcoming release of Drupal 9, join us at DrupalCon Seattle.

Information for organizations interested in providing commercial Drupal 7 Vendor Extended Support

Organizations interested in providing commercial Drupal 7 Vendor Extended Support to their customers and who have the technical knowledge to maintain Drupal 7 are invited to fill out the
application for the Drupal 7 Vendor Extended Support team. The application submission should explain why the vendor is a good fit for the program, and explain how they meet the requirements as outlined below.

Base requirements for this program include:

  • You must have experience in the public issue queue supporting Drupal 7 core or Drupal 7 Modules. You should be able to point to a history of such contribution. One way to measure this is issue credits, but there are other ways. You must continue this throughout your enrollment in the program. If you have other ways to show your experience, feel free to highlight them.
  • You must make a commitment to the Security Team, the Drupal Association, and your customers that you will remain active in this program for 3 years.
  • As a partner, you must contribute to at least 20% of all Drupal 7 Vendor Extended Support module patches and 80% of D7ES core patches in a given year. (Modules that have been moved into core in Drupal 8 count as part of core metrics in Drupal 7) .
  • Any organization involved in this program must have at least 1 member on the Drupal Security Team for at least 3 months prior to joining the program and while a member of the program. (See How to join the Drupal Security Team for information.) This person will need a positive evaluation of their contributions from the Security Working Group.
  • Payment of an Drupal 7 Vendor Extended Support annual fee for program participation is required (around $3000 a year). These fees will go to communication tools for the Drupal 7 Vendor Extended Support vendors and/or the greater community.
  • Payment of a $450 application fee is required.
  • Your company must provide paid support to Drupal 7 clients. This program is not for companies that don't provide services to external clients.
  • Application review process:

  1. We will confirm that each vendor meets the requirements outlined above and is a good fit for the program.
  2. If the Security Working Group does not think you are a good fit, we will explain why and decline your application. If you are rejected, you are able to reapply. Most rejections will be due to Organizations not having enough ongoing contribution to Drupal 7 and Organizations not having a Drupal Security Team member at their organization.
  3. The Drupal Association signs off on your participation in the program.
  4. If you are accepted, you will be added to the Drupal 7 Vendor Extended Support vendor mailing list.
  5. The Security Working Group will do a coordinated announcement with the vendors to promote the program.

If you have any questions you can email D7ES@drupal.org

Categories: Drupal

Lullabot: Hacking Culture: The Imaginary Band of Drupal Rock Stars at Lullabot

Planet Drupal - 25 February 2019 - 6:54am

Matthew Tift talks with James Sansbury and Matt Westgate about the history of Lullabot, building a team of Drupal experts, and moving away from the phrase "rock star." Ideas about "rock stars" can prevent people from applying to job postings, cause existing team members to feel inadequate, or encourage an attitude that doesn't work well in a client services setting. Rather than criticize past uses of this phrase, we talk about the effects of this phrase on behavior.

Categories: Drupal

Graphql JWT

New Drupal Modules - 25 February 2019 - 5:30am

Allows JWT authentication via GraphQL.

Categories: Drupal

iNotify Live Notifications for Drupal.

New Drupal Modules - 25 February 2019 - 1:50am
Categories: Drupal

Lullabot: Behind the Screens: Behind the Screens with Suzanne Dergacheva

Planet Drupal - 25 February 2019 - 12:00am

EvolvingWeb Co-Founder Suzanne Dergacheva spills on why she recently joined the Drupal Association, what's happening with Drupal in Montreal, and the Oboe.

Categories: Drupal

OpenSense Labs: Drupal Distributions and Social Impact Platform

Planet Drupal - 24 February 2019 - 10:04pm
Drupal Distributions and Social Impact Platform Vasundhra Mon, 02/25/2019 - 21:50

We all have learned in our biology classes that genes are made up of DNA which gives instructions to the body to grow, develop and live. In other words, it is like a blueprint or like a recipe which guides an individual to do a particular task. 

Just like DNA is important to impact a human body, Drupal distributions are necessary to build and create a social impact platform for your projects and website. 


Social impact is and must be the primary goal and measure for every social initiative. Measuring social impacts urges organizations not to only focus on the economic or financial factor, but to access their influence across the environmental and social dimensions. 

How Building a Social Impact Platform With Drupal Distributions Do Well to a Project?

A distribution packages a set of contributed and custom modules together with Drupal core to optimize Drupal for a specific use and industry. Drupal distribution has evolved from an expensive lead generation tool to something which offers a service at a large scale. Some of the Drupal distributions like:

OpenSocial 

OpenSocial is a free Drupal distribution for constructing private social networks and an out of the box solution for online communities. Open Social is a distribution that is built in Drupal 8 to construct social communities and intranets. It is built in Drupal 8, and it wraps in itself in an array of possibilities leveraging the features of Drupal 8.

In the Drupal community, Open Social is placed as a successor of Drupal Commons. Drupal Commons is a Drupal 7 distribution that is an out of the box community collaboration website.
 

 

  • A case study on Pachamama  

Pachamama approves the inherent people of the Amazon rainforest to protect their lands, culture, educate and inspire people everywhere to bring forth a growing and sustainable world. Drupal was chosen for its flexibility and customizable features.

Drupal was appointed for its versatility and customizable features. For example, Pachamama grants an on- and offline ‘Awakening the Dreamer’ course. In the course module, the user can walk through a step-by-step course program and finish with video, text or an opportunity to keep track of the development and progress. To make this possible within the Pachamama Alliance platform integration of a course module into the Open Social platform was done.
 


Lightning 

A distribution developed and maintained by Acquia. This distribution provides a framework or starting point of Drupal 8 projects that require more advanced layouts.

The developers have been provided with hundreds of embedded automated tests that allow them to implement continual integrations pipelines. It controls major functionality, essentially granting a safe environment to innovate with their own custom code additions to Lightning.

 

  • A case study on Higgidy 

Higgidy is a thriving business, offering incredible high-quality food that is sold in supermarkets. Drupal 8 was chosen for this project based on numerous factors.

The potential for future upgrades to make commerce into the platform was also an engaging benefit, enabling the user to assure that they don’t end up with a fragmented tech stack divided across many platforms. 

Being mobile-driven was a core concern of the platform selection, and Drupal 8 presented with a seamless content experience every time.

One of the primary and most important decisions was to make use of the Lightning. This gave a great head start for a site of this nature, right out of the box, presenting some very important components and assuring that they are able to get going. The site was essentially powered by Views coupled with some custom serialization.
 


Opigno 

This is an Open source e-learning platform based on Drupal that enables the user to accomplish online training, skills of students and employees. Opigno is an open source e-learning platform that is based on Drupal. It allows the user to control online training, and efficiently guarantee that student, employee and partner skills remain up to date.

Opigno LMS is intended for Companies, Corporations, and Universities, looking for an e-learning solution that is flexible and is easily scalable.
 

Drupal Commerce 

Drupal Commerce is an open-source eCommerce software that augments the content management system Drupal. It helps in managing eCommerce websites and applications of all the sizes. 
This distribution also helps in enforcing strict development standards and leveraging the greatest features of Drupal 7 and major modules like Views and Rules for maximum flexibility.
 

 

  • Drupal Commerce helping the community: A case study on Sosense

Sosense supports entrepreneurs who address some of the most challenging social and environmental problems. Drupal was selected for this project because it was one of the most relevant frameworks that build a scalable platform. 

Sosense demand was to rebrand and redevelop their first, custom-developed, platform to develop technical scalability, usability, and interaction design. The project work was simple yet appreciatively challenging. One side it drew from our expertise in creating community- and fundraising solutions. On the other side, Sosense was one of the first complex sites to apply Drupal 7 where many important modules were still in dev status. 

Testing and debugging modules like Organic Groups, Drupal Commerce and i18n, required many unexpected hours of work. The agile project management approach allowed us to tackle some of the unexpected issues with frequent releases and constant client interaction. The project was delivered on time and to the full satisfaction of our client.
 


OpenChurch 

This is the distribution which is for churches and ministries.  A flexible platform with common features of the church helping them streamline development of the website. Some of the features of this distribution are:

  • Blog - It includes a list page and archive page, the blog content type is very easy and this does not use the core blog module.
  • Bulletin - Includes block for downloading latest bulletin, also a list page and content type.
  • Events - Includes an event content, filtered by the ministry and responsive calendar.
  • Gallery - Integrates with ministry content and is an easy way to manage galleries.
  • Giving - Includes list display for featured charities
  • Homepage Rotator - a very nice way to feature content on the homepage in a slideshow which is a very common feature on sites today.
  • Ministry - this represents a church's core ministries (Missions, Youth, etc.) and integrates with other content on the site.
  • Podcast - An out of the box sermon podcast page. Also includes a block for showing the most recent podcast. It is called labeled 'Sermons' but can be used for any kind of podcast.
  • Social - Social integration with Twitter, Facebook, Google+ and more! Enable visitors to share content with their social networks.
  • Staff - Includes staff page and integration with well with ministries.
  • Video - Add 3rd party video from Youtube and Vimeo

Presto

Presto includes pre-configured and ready to use right out-of-the-box functionalities. It consists of an article content type with some pre-configured fields and a basic page content type with a paragraphs-based body field. Some pre-configured paragraph types in this distribution are:

  • Textbox
  • Image
  • Promo bar
  • Divider
  • Carousel

Not only this but it also consists of a block which allows the embedding of Drupal blocks. This distribution has an article listing page which displays a paginated listing of articles, sorted by publish date.

Conclusion  

The advantages of working with a Drupal distribution continue well till date. Maintenance is also a breeze. When you create a website born out of distribution, all modules and features are integrated and tested together. When updates are required, it is a single update, as opposed to hundreds. Thus Drupal distribution for your social impact platform is what you need.

At opensense Labs we purely follow all the functionalities that come with the Drupal distribution. Contact us on hello@opensenselabs.com for more information on the same. Our services would guide you with all the instruction and information, that you require for the same. 

blog banner blog image Drupal Drupal 8 CMS OpenSocial Opigno LMS Drupal Commerce Open Church Lightning Drupal distribution Blog Type Articles Is it a good read ? Off
Categories: Drupal

OpenSense Labs: OpenSocial for your platform? - Buzzinga!

Planet Drupal - 24 February 2019 - 10:04pm
OpenSocial for your platform? - Buzzinga! Vasundhra Mon, 02/25/2019 - 20:58

Click, tap, like, hit, post, tweet, retweet, repost, share, tag, comment - I am sure that you are known to all these terms, use them daily and even promote your business with it. 

We live in a world where the boundaries of work and office space are changing. A new era of transformation has opened up where collaboration and communication within the company is modified into a “Digital System” 

The heart of all this meaningful connection and real-time communication (Which is integral for modern business) is the social intranet.


And nothing beats the performance of OpenSocial, a Drupal distribution that is used for building social communities and intranet. 

OpenSocial is bringing power and the essence of pervasive social capabilities to the web.

You ask how?

Well, Let’s find out

Understand OpenSocial 

OpenSocial is an out-of-the-box solution for the online community. It is used for creating social communities, intranets, portals and any other social project. It appears with a collection of features and functionalities that are useful in constructing a social framework. 

In the Drupal community, Open Social is placed as an heir of Drupal Commons (Drupal Commons is a Drupal 7 distribution that is an out of the box community collaboration website) 


OpenSocial and its out-of-the-box feature 
  • Content types and structure

The user is offered with two content types: events and topics. The architecture lets OpenSocial be lightweight software that can easily be installed and can be used seamlessly by users. Blogs, News etc. are all identical content type as a topic but have separate taxonomy.

  • Media Management 

With the help of Media management, the user can efficiently arrange, resize and add images wherever they want to on a particular website. File System, Images Styles and all other media configurations that are needed to add, resize and adjust images are inbuilt.

  • Responsive and Multi-Lingual Support 

Open Social follows with Drupal 8 “mobile-first” theory and it is responsive “by default”. Not only this but it also consists of “Translation Module” that is used for Multilingual support.

  • SEO Optimization

The SEO strategy is based on a consultative approach. Adverbs, SEO, Social media and conversion optimization is used to generate the traffic. The out-of-the-box feature in OpenSocial helps the user to optimize their website in a way that more people visit it. 

OpenSocial Foundation and W3C Social Web Activity “Social standards are part of the application foundations for the Open Web Platform” 
-Jeff Jaffe 

In other words, they will be used everywhere, in diverse applications that operate on phones, cars, televisions, and e-readers. In terms of OpenSocial, the W3C standard is defined as:

The social web working group which determines the technical standards and API facilitates access to social functionalities as part of Open web platform.
The social interest group coordinates messaging around social at the W3C strategy that enables social business. 

Open source project at Apache Foundation

The Apache Software Foundation hosts two active and ongoing projects in addition to the many commercial enterprise platforms that practice on OpenSocial, it serves as reference implementations for OpenSocial technology:

Apache Shindig: It is the reference implementation of OpenSocial API specifications, versions 1.0.x and 2.0.x. It is the standard set of Social Network APIs that constitutes profiles, relationships, activities etc

Apache Rave: It is a lightweight and open-standards-based extensible platform for managing, combining and hosting OpenSocial and W3C Widget related features, technologies, and services. 

How is OpenSocial contributing to society?

The Developers 

Social platforms are interactive and exercise notifications that are provided with the alerts. Making numerous social software to control social experience takes a lot of time and effort. Building a distribution is the answer to all of it. It allows the developers to build the best things, re-use it, expand and even improve on that. 

Site Owner and Business 

If you are using Opensource Saas offerings, you have the ability to use site codes and data anytime. Social media changed modern society and communications, especially in our private lives. The decentralized nature of social software is a huge opportunity for organizations to reinvent the way they communicate and collaborate

End Users 

End users obsess over user-centered design. Without engaged end users, no projects wouldn’t go anywhere. Thus providing the users with tools that are appealing and easy to use are a must for great user experience.

Why choose OpenSocial over any other software?

Freedom for the clients. If they need to download their SaaS platform and run or extend it as they want, then they can easily do it. 

Getting to this point from scratch takes longer and the core modules give you the functionality you need from the ground up.

The above points clearly say it is better software. With the Drupal community putting extra eyes on the code, making suggestions for design and development improvements, hopefully adding new features word-of-mouth marketing, and possibly some clients.
It provides easy customization options.

OpenSocial giving tough competition to other community software in the market

The pace of digitization is steadily increasing, leaving a lot of old processes behind in the dust. The same applies to traditional methods of innovation. The internet has not just become a hub to share knowledge, but also to create knowledge together through crowd innovation.

Some of the other community software in the market like lithium is being beaten hard by OpenSocial.

How?

Let’s find out 

  Lithium OpenSocial Who uses it? Businesses of all sizes looking to attract new visitors A better way of connecting with your members, volunteers, employees, and customers Free Trail Not Provided  Provided  Free Version Not Provided  Provided  Starting Price $235.00/month It is free Entry Level set up Not Provided  Provided  What does Drupal Community Gain From Open Social? Without Drupal distributions, we won't be able to successfully compete with commercial vendors. Drupal distributions have great potential.
-Dries Buytaert

With the help of Open Social distribution, the Drupal community has been provided with a platform for their social projects. A more sustainable and adopted way of development. OpenSocial is better with Drupal because:

Users can use Open Social for their own projects and clients.
They can give back to the open-source community.
If the user is a Drupal freelancer or professional then they can improve the Drupal.org standing.

Case Study on Youth4Peace 

The UN Security Council acknowledges the positive role played by all young women and men in preserving international security. The task force for Youth, Peace, and Security proposed an updated and expanded Youth4Peace platform. This was done in order to give inspired parties and partners a path to enable consistent and timely information.

The UNDP was already familiar with the features and functionalities of Drupal as the previous site was built on the same. The organization supports open-source mainly because of the reusability feature of modules. 

Moreover, the Drupal 8 community distribution, Open Social equals several goals of the project. Goals like: innovation and the use of technology. The distribution already included most of the needed features for the project, including blogs, events, profiles, information streams, a discussion engine, and moderation tools for community managers.

Therefore, The Youth4Peace portal was developed. It was constructed using an Agile method and mainly focused on:

  • A curated Knowledge Resource Library
  • Moderated e-Discussions & e-Consultations
  • Experts’ Profiles
  • News & Events and their overviews with filters

By being able to produce content for non-community members, the community was able to reach the global platform even at a bigger pace.
 


In The End 

Now we know that OpenSocial has the right blend of features that are needed to build a social community. The distribution proves to be an appropriate platform to start building a community or intranet with immense features.

Opensense Labs understands how important it is for every organization to stay connected with the world. Therefore, we are here to leverage all those facilities and services. Ping us at hello@opensenselabs.com now.

blog banner blog image Drupal Drupal 8 CMS OpenSocial Drupal community Social Media Platforms Drupal distributions Blog Type Articles Is it a good read ? On
Categories: Drupal

Gizra.com: Do-It-Yourself Stress Testing

Planet Drupal - 24 February 2019 - 10:00pm

Earlier we wrote about stress testing, featuring Blazemeter where you could learn how to do crash your site without worrying about the infrastructure. So why did I even bother to write this post about the do-it-yourself approach? We have a complex frontend app, where it would be nearly impossible to simulate all the network activities faithfully during a long period of time. We wanted to use a browser-based testing framework, namely WebdriverI/O with some custom Node.js packages on Blazemeter, and it proved to be quicker to start to manage the infrastructure and have full control of the environment. What happened in the end? Using a public cloud provider (in our case, Linode), we programmatically launched the needed number of machines temporarily, provisioned them to have the proper stack, and the WebdriverI/O test was executed. With Ansible, Linode CLI and WebdriverIO, the whole process is repeatable and scalable, let’s see how!

Infrastructure phase

Any decent cloud provider has an interface to provision and manage cloud machines from code. Given this, if you need an arbitrary number of computers to launch the test, you can have it for 1-2 hours (100 endpoints for a price of a coffee, how does this sound?).

There are many options to dynamically and programmatically create virtual machines for the sake of stress testing. Ansible offers dynamic inventory, however the cloud provider of our choice wasn’t included in the latest stable version of Ansible (2.7) by the the time of this post. Also the solution below makes the infrastructure phase independent, any kind of provisioning (pure shell scripts for instance) is possible with minimal adaptation.

Let’s follow the steps at the guide on the installation of Linode CLI. The key is to have the configuration file at ~/.linode-cli with the credentials and the machine defaults. Afterwards you can create a machine with a one-liner:

linode-cli linodes create --image "linode/ubuntu18.04" --region eu-central --authorized_keys "$(cat ~/.ssh/id_rsa.pub)" --root_pass "$(date +%s | sha256sum | base64 | head -c 32 ; echo)" --group "stress-test"

Given the specified public key, password-less login will be possible. However this is far from enough before the provisioning. Booting takes time, SSH server is not available immediately, also our special situation is that after the stress test, we would like to drop the instances immediately, together with the test execution to minimize costs.

Waiting for machine booting is a slightly longer snippet, the CSV output is robustly parsable:

## Wait for boot, to be able to SSH in. while linode-cli linodes list --group=stress-test --text --delimiter ";" --format 'status' --no-headers | grep -v running do sleep 2 done

However the SSH connection is likely not yet possible, let’s wait for the port to be open:

for IP in $(linode-cli linodes list --group=stress-test --text --delimiter ";" --format 'ipv4' --no-headers); do while ! nc -z $IP 22 < /dev/null > /dev/null 2>&1; do sleep 1 done done

You may realize that this is overlapping with the machine booting wait. The only benefit is that separating the two allows more sophisticated error handling and reporting.

Afterwards, deleting all machines in our group is trivial:

for ID in $(linode-cli linodes list --group=stress-test --text --delimiter ";" --format 'id' --no-headers); do linode-cli linodes delete "$ID" done

So after packing everything in one script, also to put an Ansible invocation in the middle, we end up with stress-test.sh:

#!/bin/bash LINODE_GROUP="stress-test" NUMBER_OF_VISITORS="$1" NUM_RE='^[0-9]+$' if ! [[ $NUMBER_OF_VISITORS =~ $NUM_RE ]] ; then echo "error: Not a number: $NUMBER_OF_VISITORS" >&2; exit 1 fi if (( $NUMBER_OF_VISITORS > 100 )); then echo "warning: Are you sure that you want to create $NUMBER_OF_VISITORS linodes?" >&2; exit 1 fi echo "Reset the inventory file." cat /dev/null > hosts echo "Create the needed linodes, populate the inventory file." for i in $(seq $NUMBER_OF_VISITORS); do linode-cli linodes create --image "linode/ubuntu18.04" --region eu-central --authorized_keys "$(cat ~/.ssh/id_rsa.pub)" --root_pass "$(date +%s | sha256sum | base64 | head -c 32 ; echo)" --group "$LINODE_GROUP" --text --delimiter ";" done ## Wait for boot. while linode-cli linodes list --group="$LINODE_GROUP" --text --delimiter ";" --format 'status' --no-headers | grep -v running do sleep 2 done ## Wait for the SSH port. for IP in $(linode-cli linodes list --group="$LINODE_GROUP" --text --delimiter ";" --format 'ipv4' --no-headers); do while ! nc -z $IP 22 < /dev/null > /dev/null 2>&1; do sleep 1 done ### Collect the IP for the Ansible hosts file. echo "$IP" >> hosts done echo "The SSH servers became available" echo "Execute the playbook" ansible-playbook -e 'ansible_python_interpreter=/usr/bin/python3' -T 300 -i hosts main.yml echo "Cleanup the created linodes." for ID in $(linode-cli linodes list --group="$LINODE_GROUP" --text --delimiter ";" --format 'id' --no-headers); do linode-cli linodes delete "$ID" done Provisioning phase

As written earlier, Ansible is just an option, however a popular option to provision machines. For such a test, even a bunch of shell command would be sufficient to setup the stack for the test. However, after someone tastes working with infrastructure in a declarative way, this becomes the first choice.

If this is your first experience with Ansible, check out the official documentation. In a nutshell, we just declare in YAML how the machine(s) should look, and what packages it should have.

In my opinion, a simple playbook like this below, is readable and understandable as-is, without any prior knowledge. So our main.yml is the following:

- name: WDIO-based stress test hosts: all remote_user: root tasks: - name: Update and upgrade apt packages become: true apt: upgrade: yes update_cache: yes cache_valid_time: 86400 - name: WDIO and Chrome dependencies package: name: "" state: present with_items: - unzip - nodejs - npm - libxss1 - libappindicator1 - libindicator7 - openjdk-8-jre - name: Download Chrome get_url: url: "https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" dest: "/tmp/chrome.deb" - name: Install Chrome shell: "apt install -y /tmp/chrome.deb" - name: Get Chromedriver get_url: url: "https://chromedriver.storage.googleapis.com/73.0.3683.20/chromedriver_linux64.zip" dest: "/tmp/chromedriver.zip" - name: Extract Chromedriver unarchive: remote_src: yes src: "/tmp/chromedriver.zip" dest: "/tmp" - name: Start Chromedriver shell: "nohup /tmp/chromedriver &" - name: Sync the source code of the WDIO test copy: src: "wdio" dest: "/root/" - name: Install WDIO shell: "cd /root/wdio && npm install" - name: Start date debug: var=ansible_date_time.iso8601 - name: Execute shell: 'cd /root/wdio && ./node_modules/.bin/wdio wdio.conf.js --spec specs/stream.js' - name: End date debug: var=ansible_date_time.iso8601

We install the dependencies for Chrome, Chrome itself, WDIO, and then we can execute the test. For this simple case, that’s enough. As I referred to earlier:

ansible-playbook -e 'ansible_python_interpreter=/usr/bin/python3' -T 300 -i hosts main.yml

What’s the benefit over the shell scripting? For this particular use-case, mostly that Ansible makes sure that everything can happen in parallel and we have sufficient error-handling and reporting.

Test phase

We love tests. Our starter kit has WebdriverIO tests (among many other type of tests), so we picked it to stress test the full stack. If you are familiar with JavaScript or Node.js the test code will be easy to grasp:

const assert = require('assert'); describe('podcasts', () => { it('should be streamable', () => { browser.url('/'); $('.contact .btn').click(); browser.url('/team'); const menu = $('.header.menu .fa-bars'); menu.waitForDisplayed(); menu.click(); $('a=Jobs').click(); menu.waitForDisplayed(); menu.click(); $('a=Podcast').click(); $('#mep_0 .mejs__controls').waitForDisplayed(); $('#mep_0 .mejs__play button').click(); $('span=00:05').waitForDisplayed(); }); });

This is our spec file, which is the essence, alongside with the configuration.

Could we do it with a bunch of requests in jMeter or Gatling? Almost. The icing on the cake is where we stress test the streaming of the podcast. We simulate a user who listens the podcast for 10 seconds. For for any frontend-heavy app, realistic stress testing requires a real browser, WDIO provides us exactly this.

The WebdriverIO test execution - headless mode deactivated Test execution phase

After making the shell script executable (chmod 750 stress-test.sh), we are able to execute the test either:

  • with one visitor from one virtual machine: ./stress-test.sh 1
  • with 100 visitors from 100 virtual machines for each: ./stress-test.sh 100

with the same simplicity. However, for very large scale tests, you should think about some bottlenecks, such as the capacity of the datacenter on the testing side. It might make sense to randomly pick a datacenter for each testing machine.

The test execution consists of two main parts: bootstrapping the environment and executing the test itself. If bootstrapping the environment takes too high of a percentage, one strategy is to prepare a Docker image, and instead of creating the environment again and again, just use the image. In that case, it’s a great idea to check for a container-specific hosting solution instead of standalone virtual machine.

Would you like to try it out now? Just do a git clone https://github.com/Gizra/diy-stress-test.git!

Result analysis

For such a distributed DIY test, analyzing the results could be challenging. For instance, how would you measure requests/second for a specific browser-based test, like WebdriverI/O?

For our case, the analysis happens on the other side. Almost all hosting solutions we encounter support New Relic, which could help a lot in such an analysis. Our test was DIY, but the result handling was outsourced. The icing on the cake is that it helps to track down the bottlenecks too, so a similar solution for your hosting platform can be applied as well.

However what if you’d like to somehow gather results together after such a distributed test execution?

Without going into detail, you may study the fetch module of Ansible, so you can gather a result log from all the test servers and have it locally in a central place.

Conclusion

It was a great experience that after we faced some difficulty with a hosted stress test platform; in the end, we were able to recreate a solution from scratch without much more development time. If your application also needs special, unusual tools for stress-testing, you might consider this approach. All the chosen components, such as Linode, WebdriverIO or Ansible are easily replaceable with your favorite solution. Geographically distributed stress testing, fully realistic website visitors with heavy frontend logic, low-cost stress testing – it seems now you’re covered!

Continue reading…

Categories: Drupal

Korea Phone

New Drupal Modules - 24 February 2019 - 8:59pm

This module is a Drupal field module that provides Korea's phone number input interface. The telephone number in Korea consists of the network identification number or area code, the base station number, and the serial number.
This module can be used to develop sites that are serviced in Korea. Use in other countries is inappropriate.

Installation

This is the same as a typical installation of the Drupal module.

Categories: Drupal

Pages

Subscribe to As If Productions aggregator - Drupal