-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ioc/tests: add test for testing selection of epics-base
- Loading branch information
1 parent
b9c8272
commit ec1a3b6
Showing
21 changed files
with
372 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
releaseBranch: | ||
{pkgs, ...}: let | ||
inherit (pkgs) epnixLib; | ||
inherit (pkgs.stdenv.hostPlatform) system; | ||
|
||
result = epnixLib.evalEpnixModules { | ||
nixpkgsConfig.system = system; | ||
epnixConfig.imports = [ | ||
(import ./top/epnix.nix releaseBranch) | ||
]; | ||
}; | ||
|
||
service = result.config.epnix.nixos.services.ioc.config; | ||
|
||
ioc = result.outputs.build; | ||
in | ||
pkgs.nixosTest { | ||
name = "default-ioc-epics-base-${releaseBranch}"; | ||
meta.maintainers = with epnixLib.maintainers; [minijackson]; | ||
|
||
nodes.machine = { | ||
environment.systemPackages = [pkgs.epnix.epics-base]; | ||
systemd.services.ioc = service; | ||
}; | ||
|
||
testScript = '' | ||
machine.wait_for_unit("default.target") | ||
machine.wait_for_unit("ioc.service") | ||
with subtest("wait until started"): | ||
assert machine.wait_until_succeeds("caget -t SIMPLE:AI").strip() == "0" | ||
with subtest("EPICS revision is correct"): | ||
machine.succeed("journalctl --no-pager -u ioc.service | grep -F '## EPICS R${releaseBranch}'") | ||
with subtest("ai records"): | ||
assert machine.wait_until_succeeds("caget -t SIMPLE:AI").strip() == "0" | ||
machine.succeed("caput SIMPLE:AI 123.456") | ||
assert machine.wait_until_succeeds("caget -t SIMPLE:AI").strip() == "123.456" | ||
''; | ||
|
||
passthru = { | ||
inherit ioc; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
# Install directories | ||
/bin/ | ||
/cfg/ | ||
/db/ | ||
/dbd/ | ||
/html/ | ||
/include/ | ||
/lib/ | ||
/templates/ | ||
|
||
# Local configuration files | ||
/configure/*.local | ||
|
||
# iocBoot generated files | ||
/iocBoot/*ioc*/cdCommands | ||
/iocBoot/*ioc*/dllPath.bat | ||
/iocBoot/*ioc*/envPaths | ||
/iocBoot/*ioc*/relPaths.sh | ||
|
||
# Build directories | ||
O.*/ | ||
|
||
# Common files created by other tools | ||
/QtC-* | ||
/.vscode/ | ||
*.orig | ||
*.log | ||
.*.swp | ||
.DS_Store |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
# Makefile at top of application tree | ||
TOP = . | ||
include $(TOP)/configure/CONFIG | ||
|
||
# Directories to build, any order | ||
DIRS += configure | ||
DIRS += $(wildcard *Sup) | ||
DIRS += $(wildcard *App) | ||
DIRS += $(wildcard *Top) | ||
DIRS += $(wildcard iocBoot) | ||
|
||
# The build order is controlled by these dependency rules: | ||
|
||
# All dirs except configure depend on configure | ||
$(foreach dir, $(filter-out configure, $(DIRS)), \ | ||
$(eval $(dir)_DEPEND_DIRS += configure)) | ||
|
||
# Any *App dirs depend on all *Sup dirs | ||
$(foreach dir, $(filter %App, $(DIRS)), \ | ||
$(eval $(dir)_DEPEND_DIRS += $(filter %Sup, $(DIRS)))) | ||
|
||
# Any *Top dirs depend on all *Sup and *App dirs | ||
$(foreach dir, $(filter %Top, $(DIRS)), \ | ||
$(eval $(dir)_DEPEND_DIRS += $(filter %Sup %App, $(DIRS)))) | ||
|
||
# iocBoot depends on all *App dirs | ||
iocBoot_DEPEND_DIRS += $(filter %App,$(DIRS)) | ||
|
||
# Add any additional dependency rules here: | ||
|
||
include $(TOP)/configure/RULES_TOP |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
# CONFIG - Load build configuration data | ||
# | ||
# Do not make changes to this file! | ||
|
||
# Allow user to override where the build rules come from | ||
RULES = $(EPICS_BASE) | ||
|
||
# RELEASE files point to other application tops | ||
include $(TOP)/configure/RELEASE | ||
-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).Common | ||
|
||
ifdef T_A | ||
-include $(TOP)/configure/RELEASE.Common.$(T_A) | ||
-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).$(T_A) | ||
endif | ||
|
||
# Check EPICS_BASE is set properly | ||
ifneq (file,$(origin EPICS_BASE)) | ||
$(error EPICS_BASE must be set in a configure/RELEASE file) | ||
else | ||
ifeq ($(wildcard $(EPICS_BASE)/configure/CONFIG_BASE),) | ||
$(error EPICS_BASE does not point to an EPICS installation) | ||
endif | ||
endif | ||
|
||
CONFIG = $(RULES)/configure | ||
include $(CONFIG)/CONFIG | ||
|
||
# Override the Base definition: | ||
INSTALL_LOCATION = $(TOP) | ||
|
||
# CONFIG_SITE files contain local build configuration settings | ||
include $(TOP)/configure/CONFIG_SITE | ||
|
||
# Host-arch specific settings | ||
-include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).Common | ||
|
||
ifdef T_A | ||
# Target-arch specific settings | ||
-include $(TOP)/configure/CONFIG_SITE.Common.$(T_A) | ||
|
||
# Host & target specific settings | ||
-include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A) | ||
endif | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
# CONFIG_SITE | ||
|
||
# Make any application-specific changes to the EPICS build | ||
# configuration variables in this file. | ||
# | ||
# Host/target specific settings can be specified in files named | ||
# CONFIG_SITE.$(EPICS_HOST_ARCH).Common | ||
# CONFIG_SITE.Common.$(T_A) | ||
# CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A) | ||
|
||
# CHECK_RELEASE controls the consistency checking of the support | ||
# applications pointed to by the RELEASE* files. | ||
# Normally CHECK_RELEASE should be set to YES. | ||
# Set CHECK_RELEASE to NO to disable checking completely. | ||
# Set CHECK_RELEASE to WARN to perform consistency checking but | ||
# continue building even if conflicts are found. | ||
CHECK_RELEASE = YES | ||
|
||
# Set this when you only want to compile this application | ||
# for a subset of the cross-compiled target architectures | ||
# that Base is built for. | ||
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-ppc32 | ||
|
||
# To install files into a location other than $(TOP) define | ||
# INSTALL_LOCATION here. | ||
#INSTALL_LOCATION=</absolute/path/to/install/top> | ||
|
||
# Set this when the IOC and build host use different paths | ||
# to the install location. This may be needed to boot from | ||
# a Microsoft FTP server say, or on some NFS configurations. | ||
#IOCS_APPL_TOP = </IOC's/absolute/path/to/install/top> | ||
|
||
# For application debugging purposes, override the HOST_OPT and/ | ||
# or CROSS_OPT settings from base/configure/CONFIG_SITE | ||
#HOST_OPT = NO | ||
#CROSS_OPT = NO | ||
|
||
# These allow developers to override the CONFIG_SITE variable | ||
# settings without having to modify the configure/CONFIG_SITE | ||
# file itself. | ||
-include $(TOP)/../CONFIG_SITE.local | ||
-include $(TOP)/configure/CONFIG_SITE.local | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
TOP=.. | ||
|
||
include $(TOP)/configure/CONFIG | ||
|
||
TARGETS = $(CONFIG_TARGETS) | ||
CONFIGS += $(subst ../,,$(wildcard $(CONFIG_INSTALLS))) | ||
|
||
include $(TOP)/configure/RULES |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# RELEASE - Location of external support modules | ||
# | ||
# IF YOU CHANGE ANY PATHS in this file or make API changes to | ||
# any modules it refers to, you should do a "make rebuild" in | ||
# this application's top level directory. | ||
# | ||
# The EPICS build process does not check dependencies against | ||
# any files from outside the application, so it is safest to | ||
# rebuild it completely if any modules it depends on change. | ||
# | ||
# Host- or target-specific settings can be given in files named | ||
# RELEASE.$(EPICS_HOST_ARCH).Common | ||
# RELEASE.Common.$(T_A) | ||
# RELEASE.$(EPICS_HOST_ARCH).$(T_A) | ||
# | ||
# This file is parsed by both GNUmake and an EPICS Perl script, | ||
# so it may ONLY contain definititions of paths to other support | ||
# modules, variable definitions that are used in module paths, | ||
# and include statements that pull in other RELEASE files. | ||
# Variables may be used before their values have been set. | ||
# Build variables that are NOT used in paths should be set in | ||
# the CONFIG_SITE file. | ||
|
||
# Variables and paths to dependent modules: | ||
#MODULES = /path/to/modules | ||
#MYMODULE = $(MODULES)/my-module | ||
|
||
# If using the sequencer, point SNCSEQ at its top directory: | ||
#SNCSEQ = $(MODULES)/seq-ver | ||
|
||
# EPICS_BASE should appear last so earlier modules can override stuff: | ||
EPICS_BASE = /nix/store/gq8ysfw2yqwij1wd64vcc0nwy8p67vzx-epics-base-7.0.7 | ||
|
||
# Set RULES here if you want to use build rules from somewhere | ||
# other than EPICS_BASE: | ||
#RULES = $(MODULES)/build-rules | ||
|
||
# These lines allow developers to override these RELEASE settings | ||
# without having to modify this file directly. | ||
-include $(TOP)/../RELEASE.local | ||
-include $(TOP)/../RELEASE.$(EPICS_HOST_ARCH).local | ||
-include $(TOP)/configure/RELEASE.local |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# RULES | ||
|
||
include $(CONFIG)/RULES | ||
|
||
# Library should be rebuilt because LIBOBJS may have changed. | ||
$(LIBNAME): ../Makefile |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
#RULES.ioc | ||
include $(CONFIG)/RULES.ioc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
#RULES_DIRS | ||
include $(CONFIG)/RULES_DIRS |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#RULES_TOP | ||
include $(CONFIG)/RULES_TOP | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
releaseBranch: _: { | ||
epnix = { | ||
meta.name = "checks-default-ioc"; | ||
buildConfig.src = ./.; | ||
|
||
epics-base.releaseBranch = releaseBranch; | ||
|
||
nixos.services.ioc = { | ||
app = "simple"; | ||
ioc = "iocsimple"; | ||
}; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
TOP = .. | ||
include $(TOP)/configure/CONFIG | ||
DIRS += $(wildcard *ioc*) | ||
DIRS += $(wildcard as*) | ||
include $(CONFIG)/RULES_DIRS | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
TOP = ../.. | ||
include $(TOP)/configure/CONFIG | ||
ARCH = $(EPICS_HOST_ARCH) | ||
TARGETS = envPaths | ||
include $(TOP)/configure/RULES.ioc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
#!../../bin/linux-x86_64/simple | ||
|
||
< envPaths | ||
|
||
dbLoadDatabase "../../dbd/simple.dbd" | ||
simple_registerRecordDeviceDriver(pdbbase) | ||
|
||
dbLoadRecords("../../db/simple.db") | ||
|
||
iocInit() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
TOP=../.. | ||
include $(TOP)/configure/CONFIG | ||
#---------------------------------------- | ||
# ADD MACRO DEFINITIONS AFTER THIS LINE | ||
|
||
DB += simple.db | ||
|
||
include $(TOP)/configure/RULES | ||
#---------------------------------------- | ||
# ADD RULES AFTER THIS LINE | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
record(ai, "SIMPLE:AI") { | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# Makefile at top of application tree | ||
TOP = .. | ||
include $(TOP)/configure/CONFIG | ||
|
||
# Directories to be built, in any order. | ||
# You can replace these wildcards with an explicit list | ||
DIRS += $(wildcard src* *Src*) | ||
DIRS += $(wildcard db* *Db*) | ||
|
||
# If the build order matters, add dependency rules like this, | ||
# which specifies that xxxSrc must be built after src: | ||
#xxxSrc_DEPEND_DIRS += src | ||
|
||
include $(TOP)/configure/RULES_DIRS |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
TOP=../.. | ||
|
||
include $(TOP)/configure/CONFIG | ||
#---------------------------------------- | ||
# ADD MACRO DEFINITIONS AFTER THIS LINE | ||
#============================= | ||
|
||
PROD_IOC = simple | ||
# simple.dbd will be created and installed | ||
DBD += simple.dbd | ||
|
||
# simple.dbd will be made up from these files: | ||
simple_DBD += base.dbd | ||
|
||
# simple_registerRecordDeviceDriver.cpp derives from simple.dbd | ||
simple_SRCS += simple_registerRecordDeviceDriver.cpp | ||
|
||
# Build the main IOC entry point on workstation OSs. | ||
simple_SRCS_DEFAULT += simpleMain.cpp | ||
|
||
# Finally link to the EPICS Base libraries | ||
simple_LIBS += $(EPICS_BASE_IOC_LIBS) | ||
|
||
#=========================== | ||
|
||
include $(TOP)/configure/RULES | ||
#---------------------------------------- | ||
# ADD RULES AFTER THIS LINE | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
/* simpleMain.cpp */ | ||
/* Author: Marty Kraimer Date: 17MAR2000 */ | ||
|
||
#include <stddef.h> | ||
#include <stdlib.h> | ||
#include <stddef.h> | ||
#include <string.h> | ||
#include <stdio.h> | ||
|
||
#include "epicsExit.h" | ||
#include "epicsThread.h" | ||
#include "iocsh.h" | ||
|
||
int main(int argc,char *argv[]) | ||
{ | ||
if(argc>=2) { | ||
iocsh(argv[1]); | ||
epicsThreadSleep(.2); | ||
} | ||
iocsh(NULL); | ||
epicsExit(0); | ||
return(0); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters